composer的出现,使得PHPer能够像Java同样更加方便的管理代码。在composer没有出现以前,人们大多使用pear、pecl管理依赖,可是局限性不少,也不多有人用(接触的大多phper基本不适用pear管理依赖)。composer不单单可以解决依赖的问题,也能够在必定程度上解决造轮子的问题。php
废话很少说,这篇主要记录如何建立本身的package。java
大概步骤以下:git
编写composer.jsongithub
先看一个示例:json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{
"name"
:
"jenner/message_queue"
,
"description"
:
"php message queue wrapper"
,
"license"
:
"MIT"
,
"keywords"
: [
"message queue"
],
"version"
:
"1.0.0"
,
"authors"
: [
{
"name"
:
"Jenner"
,
"email"
:
"hypxm@qq.com"
}
],
"require"
: {
"php"
:
">=5.3.0"
},
"autoload"
: {
"psr-0"
: {
"Jenner\\Zebra\\MessageQueue"
:
"src/"
}
}
}
|
须要注意的几个字段说明以下:app
name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动建立这个目录。例如org/package包,则会在vender下建立org/package目录。composer
autoload:包的加载方式,具体加载方式能够参考composer中文网说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。工具
copy代码修改命名空间ui
composer.json文件修改后,咱们须要把要打包的源文件复制过来。这里我把全部的文件放在了src目录下,后面可能会有和src同级的tests等目录,而这些目录是不会被加载的。src目录下需遵循psr-0标准。命名空间和目录定义要一直。例如Namespcae/SubNamespace命名空间,则src下必须有Namespace/SubNamespace目录。spa
代码编写标准能够参考psr-0、psr-1标准
递交本身的包
pacagist开放递交,你能够任意递交本身的包,固然,要符合必定规则。
packagist右上角有一个submit package的按钮,点击会跳转到递交页面,以下图:
而后在文本框中输入你在github上建立的项目的Git地址。packagist会自动检测是否合法。若是合法点击递交便可递交本身的包了。
你可能须要在github上面发布几个release,这样packagist才会认定你的包是稳定的,不然只能required开发包。
设置github的hook
版本控制工具大多支持hook,用于代码递交时触发一个事件,将代码同步到其余环境中。在github上设置hook后,咱们每次pull,都会自动同步到packagist上,这样就不须要咱们手动强制同步了。具体操做能够参见packgist的说明,操做很简单,耐心看下应该问题不大。
最后,若是别人使用了这个包。他的vendor目录下就会产生jenner/message_queue目录,其下的内容就是你github上的代码了,结构是彻底一致的。