composer的出现,使得PHPer可以像java一样更加方便的管理代码。在composer没有出现之前,人们大多使用pear、pecl管理依赖,但是局限性很多,也很少有人用(接触的大多phper基本不适用pear管理依赖)。composer不仅仅能够解决依赖的问题,也可以在一定程度上解决造轮子的问题。
废话不多说,这篇主要记录如何创建自己的package。
大概步骤如下:
编写composer.json
先看一个示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22class="jscript plain" style="font-variant: inherit; margin: 0px !important; padding: 0px !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; line-height: 1.1em !important; vertical-align: baseline !important; float: none !important; height: auto !important; overflow: visible !important; width: auto !important; background: none !important;">{
????
"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/"
????????
}
????
}
}
需要注意的几个字段说明如下:
name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动创建这个目录。例如org/package包,则会在vender下创建org/package目录。
autoload:包的加载方式,具体加载方式可以参考composer中文网说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。
?
copy代码修改命名空间
composer.json文件修改后,我们需要把要打包的源文件复制过来。这里我把所有的文件放在了src目录下,后面可能会有和src同级的tests等目录,而这些目录是不会被加载的。src目录下需遵循psr-0标准。命名空间和目录定义要一直。例如Namespcae/SubNamespace命名空间,则src下必须有Namespace/SubNamespace目录。
代码编写标准可以参考psr-0、psr-1标准
?
递交自己的包
pacagist开放递交,你可以任意递交自己的包,当然,要符合一定规则。
packagist右上角有一个submit package的按钮,点击会跳转到递交页面,如下图:
QQ截图20141104224005" src="/Upload/Images/2015051117/D7B29538BAC3EEFB.png" style="border-style: none; max-width: 100%;">
然后在文本框中输入你在github上创建的项目的git地址。packagist会自动检测是否合法。如果合法点击递交即可递交自己的包了。
你可能需要在github上面发布几个release,这样packagist才会认定你的包是稳定的,否则只能required开发包。
设置github的hook
版本控制工具大多支持hook,用于代码递交时触发一个事件,将代码同步到其他环境中。在github上设置hook后,我们每次pull,都会自动同步到packagist上,这样就不需要我们手动强制同步了。具体操作可以参见packgist的说明,操作很简单,耐心看下应该问题不大。
?
最后,如果别人使用了这个包。他的vendor目录下就会产生jenner/message_queue目录,其下的内容就是你github上的代码了,结构是完全一致的。
?
?
原创文章,转载请注明:?转载自始终不够
本文链接地址:?composer之创建自己的包