原文:罗志强的博客

描述

在php社区中,利用composer管理php代码包的方式越来越普遍了。

下面记录下如何创建自己的代码包

构建

  1. 创建一个包目录
  2. 执行composer init 进行包初始化
  3. 按照步骤完成包信息
  4. 生成composer.json文件
mkdir test-pack
cd test-pack
composer init
复制代码

初始化composer.json后,你可以修改composer.json里面的任何信息和依赖。

一般composer包的结构都会在根目录下创建两个目录,src和tests。然后通过修改composer.json来让src和tests自动加载,psr-4是php社区的文件加载规范,通过加入以下配置,那么src目录下的文件命名空间都必须以 Diablo\xxxx开头,其实就是一个映射关系,你可以修改任何命名空间前缀映射到任何目录下

完整的composer.json

{"name": "diablo/test-pack","authors": [{"name": "Diablo","email": "iluozhiqiang@gmail.com"}],"require": {},"autoload": {"psr-4": {"Diablo\\": "src/"}},"autoload-dev": {"psr-4": {"Tests\\": "tests/"}}
}
复制代码

编辑好composer.json后,就可以执行composer安装命令来构建自动加载了

composer install
复制代码

在src下我创建了一个Auth.php文件

<?phpnamespace Diablo;class Auth
{public function __construct(){}public function login($params){return ['uid' => 1,'name' => 'diablo','email' => 'iluozhiqiang@gmail.com',];}
}复制代码

然后我在tests目录下创建一个测试文件AuthTest.php,看这个包有没有正常加载

<?phprequire "../vendor/autoload.php";use Diablo\Auth;$auth = new Auth;
$user = $auth->login([]);
print_r($user);复制代码

执行下测试文件

cd tests
php AuthTest.php
Array
([uid] => 1[name] => diablo[email] => iluozhiqiang@gmail.com
)
复制代码

有正常输出。我们的包构建好了

发布

首先你应该讲代码提交到代码仓库,例如github或者私有的git仓库

发布到 packagist

好的,你现在可以发布你的包了,但你不会希望你的用户每次都这样繁琐的指定包的来源。

你可能注意到了另一件事,我们并没有指定 monolog/monolog 的来源。它是怎么工作的?答案是 packagist。

Packagist 是 Composer 主要的一个包信息存储库,它默认是启用的。任何在 packagist 上发布的包都可以直接被 Composer 使用。就像 monolog 它被 发布在 packagist 上,我们可以直接使用它,而不必指定任何额外的来源信息。

如果我们想与世界分享我们的 hello-world,我们最好将它发布到 packagist 上。这样做是很容易的。

你只需要点击那个大大的 "Submit Package" 按钮并注册。接着提交你库的来源地址,此时 packagist 就开始了抓取。一旦完成,你的包将可以提供给任何人使用。

转载于:https://juejin.im/post/5c55271ff265da2d943f39e9

01-利用composer创建php代码包相关推荐

  1. php 框架搭建,利用composer搭建一个PHP微框架(API微项目)

    为什么搭建一个框架(搭建一个怎样的框架) 通过搭建一个框架更好的学习PHP 搭建一个专门用于构建API的微型框架. 微型框架基本上是一个封装的路由,用来转发HTTP请求至一个闭包,控制器,或方法等等, ...

  2. composer之创建自己的包

    BY JENNER · 2014年11月4日· 阅读次数:19 composer的出现,使得PHPer可以像java一样更加方便的管理代码.在composer没有出现之前,人们大多使用pear.pec ...

  3. 如何利用微信小游戏的分包加载机制突破4M代码包体积限制

    相信大家度过了一个不错的端午假期,在端午前夕,即6月15日晚上,微信小游戏宣布支持分包加载功能,白鹭引擎在端午节后第一天正式支持分包加载机制.在正式向开发者介绍如何使用前,我先为各位解读一下我对微信提 ...

  4. iOS回顾笔记( 01 )-- XIB和纯代码创建应用的对比

    iOS回顾笔记( 01 )--  XIB和纯代码创建应用的对比 很多时候我们工作很久突然闲下来的时候,是不是也感到无聊过?这就是我现在的生活,不过闲一段时间也挺好,可以好好回顾一下自己以前学习iOS路 ...

  5. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

  6. php 利用个人邮箱,利用 Composer 完善自己的 PHP 框架(二)——发送邮件

    利用 Composer 完善自己的 PHP 框架(二)--发送邮件 2014-10-18 / 阅读数:23506 / 分类: PHP 回顾 上一篇文章中,我们手工建造了一个简易的视图加载器,顺便引入了 ...

  7. Laravel框架01:composer和Laravel简介

    Laravel框架01:composer和Laravel简介 一.Composer介绍 二.创建Laravel项目 三.Laravel目录结构 四.Laravel启动方式 一.Composer介绍 c ...

  8. composer mysql_利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM

    利用 Composer 一步一步构建自己的 PHP 框架(四)--使用 ORM 2014-10-16 / 阅读数:65457 / 分类: PHP 回顾 经过前三篇文章 基础准备 . 构建路由 和 设计 ...

  9. [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. 食堂就餐刷卡系统源码_智慧食堂重新定义你的食堂管理系统
  2. iOS架构-cocoaPods之自制私有库及管理(17)
  3. java中顺式和链式_Java单链表顺序和链式实现(数据结构五)
  4. 皮一皮:谁没有年少轻狂过...
  5. 一文学会Maven的版本发布
  6. 后台开发经典书籍--unix网络编程
  7. 菲律宾谋定农业大建特建构想 对话国际农民丰收节贸易会
  8. SAP ME1M如何以ALV形式显示(鹦鹉学舌篇)
  9. 匿名类java的说明_Java8 Lambdas与匿名类
  10. java调用支付接口实例_Java 调用支付宝接口
  11. 【MFC】显示系统时间的状态栏
  12. 优秀的程序员VS糟糕的程序员
  13. ora-00119和ora-00132解决方案
  14. 大数据分析具备哪些特点
  15. TreeSet有序集合
  16. 批处理批量更改文件名并排序
  17. 苹果开发——设置iTunesnbsp;Connec…
  18. 中级职称的计算机考试题库,中级职称计算机考试模拟题库及答案
  19. 基于ESP32的蓝牙鼠标键盘(一)BleKeyboard.h函数解析
  20. Python语法——列表、元组、集合、字典

热门文章

  1. SEO集思广益,如何做到效果最佳?
  2. maven 依赖com.google.code.kaptcha
  3. 数据库两表联查、多表联查,多重联查
  4. 利用FFT计算非平稳随机信号的WVD分布
  5. klee-2.1安装(按照这个博客,闭着眼都能成功!)
  6. 安卓手机小说阅读器_书城小说阅读器app下载_书城小说阅读器手机版下载
  7. BR/EDR控制器: 基带规范(Baseband Specification)
  8. 位操作 、|、~、^、、
  9. MySQL主键约束-PRIMARY KEY
  10. Python优秀函数库集锦(二)