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上的代碼了,結構是徹底一致的。