composer是一個基於項目的依賴管理器,負責將php項目的所依賴的包和庫安裝在項目的目錄中,默認不會不會安裝任何數據到全局.他用於取代以前pear工具php
1 安裝Composerredis
2 簡單應用
咱們只須要聲明一個項目所依賴的包或庫便可,此後其餘的事情就由Composer來處理了。所以使用Composer最重要的就是在項目目錄中編寫composer.json配置文件。例如你有一個項目,須要依賴monolog,能夠這樣寫composer.json文件:
{
"require":
{
"monolog/monolog": "1.2.*"
}
}
有了此文件後,在項目目錄中執行composer install,即會在項目目錄的vendor/目錄下建立其所依賴的庫。
另外一方面,包含了composer.json的目錄,也能夠發佈出去,讓其餘人經過composer進行安裝。只須要在packagelist網站,把此包傳上去便可。
3 配置文件說明json
Composer使用json做爲其配置文件的格式。在工程的根目錄下composer.json所定義的包稱爲root包。在配置文件中有以下的屬性。數組
3.1 require
格式爲: "require":{"vendor-name/package-name":"version", ...}
名字部分會做爲vendor下的路徑進行建立
版本支持精確的版本號,也支持範圍如>=1.0; >=1.0,<2.0; ","做爲邏輯與,而"!"做爲邏輯或的意思。示例中使用了通配符*
版本也支持tag或branch名稱。
相似的有require-dev,前者用於聲明項目發佈版本的依賴包,後者用於聲明項目開發或測試中依賴的包。
3.2 autoloadcomposer
composer支持PSR-0,PSR-4,classmap及files包含以支持文件自動加載。PSR-4爲推薦方式。curl
3.2.1 Files類型
格式:"autoload":{"files":["path/to/1.php","path/to/2.php",...]}
支持將數組中的文件進行自動加載,文件的路徑相對於項目的根目錄。缺點是麻煩,須要將全部文件都寫進配置。
3.2.2 classmap類型
格式:"autoload":{"classmap": ["path/to/src1","path/to/src2",...]}
支持將數組中的路徑下的文件進行自動加載。其很方便,但缺點是一旦增長了新文件,須要執行dump-autoload命令從新生成映射文件vendor/composer/autoload_classmap.php。
3.2.3 psr-0類型
格式:"autoload":{"psr-0":{
"name1\\space\\":["path/",...],
"name2\\space\\":["path2/",...],
}
}
支持將命名空間映射到路徑。命名空間結尾的\\不可省略。當執行install或update時,加載信息會寫入vendor/composer/autoload_namespace.php文件。若是但願解析指定路徑下的全部命名空間,則將命名空間置爲空串便可。
須要注意的是對應name2\space\Foo類的類文件的路徑爲path2/name2/space/Foo.php
3.2.4 psr-4類型
格式:"autoload":{"psr-4":{
"name1\\space\\":["path/",...],
"name2\\space\\":["path2/",...],
}
}
支持將命名空間映射到路徑。命名空間結尾的\\不可省略。當執行install或update時,加載信息會寫入vendor/composer/autoload_psr4.php文件。若是但願解析指定路徑下的全部命名空間,則將命名空間置爲空串便可。
須要注意的是對應name2\space\Foo類的類文件的路徑爲path2/space/Foo.php,name2不出如今路徑中。
PSR-4和PSR-0最大的區別是對下劃線(underscore)的定義不一樣。PSR-4中,在類名中使用下劃線沒有任何特殊含義。而PSR-0則規定類名中的下劃線_會被轉化成目錄分隔符。
3.3 name
格式:"name":"vendor/package"
若是要發佈一個包,你須要指定包的名字信息。
3.4 version
格式:"version":"1.0.2"
若是要發佈一個包,你須要指定包的版本號。版本號的格式爲X.Y.Z或vX.Y.Z,其後能夠加後綴如-dev,-patch,-alpha,-beta或-RC。除dev外,尾上還可加一個數字,如1.0.0-alpha3。
3.5 description
格式:"description":"your own description at here!"
若是要發佈一個包,能夠指定一個簡短的介紹
3.5 type
格式:"type":"library"
說明包的類型,支持以下library,project,metapackage,composer-plugin,默認爲library
3.6 keywords
格式:"keywords":["logging","database","redis"]
一個數組的關鍵字,用於搜索或過濾時使用。
3.7 homepage
可選的,說明項目的網站地址
3.8 time/license
說明項目的時間和License,時間格式爲YY-MM-DD HH:MM:SS
3.9 authors
格式:"authors":[
{"name":"ss","email":"ss@ss.com","homepage":"","role":""},...
]
用於說明項目的做者信息,爲可選的。
3.10 support
格式:"support":{"emial":"","issues":"","forum":"","wiki":"","irc":"" }
用於說明項目的支持信息
3.11 conflict
用於聲明與本包有衝突的包的版本,使用相似於require。
3.12 replace
用於聲明須要替換的包,使用相似於require
3.13 provided
用於說明本包實現了某個包的接口
3.14 suggest
格式:"suggest":{"vendor/package":"Some description!"}
用於說明可選的,用於加強功能的包及說明。
4 命令行工具
有了配置文件後,即可以使用composer命令來執行,有以下命令
init 進入交互式嚮導,在當前目錄下生成composer.json文件
install 根據配置進行安裝
選項 --prefer-source
--prefer-dist
--dry-run
--dev/--no-dev
-o 將psr0/4轉換爲classmap以提高性能
update [package-name ...] 根據配置升級指定的包
search [pattern] 從packagelist中搜索包
show [package-name] 顯示包的信息
depends package 分析項目中包的依賴
validate 驗證配置文件內容
status 檢查代碼是修改信息
self-update 升級composer自己
config 配置composer本地或全局選項,能夠--list顯示全部可配置項 格式爲conifg [option] [key] [value...]
create-project vendor/package path version 在指定路徑下下載一個項目,默認從packagelist上搜索
dump-autoload 當類映射中加入新類時,用於更新加載器
5 自動加載
對於composer管理的依賴,若是但願自動加載只須要在文件中加入:require 'vendor/autoload.php'
拿上面的例子,使用依賴的類就十分簡單了,使用packet-name\class-name就能夠直接訪問了。如
$log = new Monolog\Logger();
6 雜項ide
composer.lock文件用於記錄各依賴的版本,若是使用了VCS,即此文件也須要進行提交。由於若是此文件存在,即composer會按照此文件中的版本進行下載,會忽略composer.json文件。若是須要更新版本,則須要修改composer.json,並執行update命令,此時會下載新版本,並更新composer.lock文件。工具