Composer是PHP中的一個(gè)依賴(lài)管理工具. 它可以讓你聲明自己項(xiàng)目所依賴(lài)的庫(kù),然后它將會(huì)在項(xiàng)目中為你安裝這些庫(kù)。
Composer不是包管理器。是的,它實(shí)際上和"包"或者庫(kù)打交道,但是它是以項(xiàng)目為單位進(jìn)行管理,把它們安裝到你項(xiàng)目中的一個(gè)目錄(例如vendor
)。默認(rèn)情況下它不會(huì)以全局的方式安裝任何東西。因此,它是一個(gè)依賴(lài)管理器。
這個(gè)想法并不新鮮,Composer的靈感是來(lái)自于node的npm和ruby的bundler。但是目前PHP還沒(méi)有一個(gè)這樣的工具。
Composer解決的問(wèn)題是:
a) 你有一個(gè)依賴(lài)N多庫(kù)的項(xiàng)目。
b) 這些庫(kù)中一些又依賴(lài)于其他的庫(kù)。
c) 你聲明你所依賴(lài)的庫(kù)。
d) Composer找出哪些包的哪個(gè)版本將會(huì)被安裝,然后安裝它們(也就是把它們下載到你的項(xiàng)目中)。
假設(shè)你正在創(chuàng)建一個(gè)項(xiàng)目,然后你需要一個(gè)日志操作的庫(kù)。你決定使用monolog。為了把它加入到你的項(xiàng)目中,你需要做的就是創(chuàng)建一個(gè)名為composer.json
的文件,其描述這個(gè)項(xiàng)目的依賴(lài)關(guān)系。
{
"require": {
"monolog/monolog": "1.2.*"
}
}
我們簡(jiǎn)單的描述說(shuō)我們的項(xiàng)目依賴(lài)某個(gè)monolog/monolog
包,版本只要是以1.2
開(kāi)頭的就行。
Composer需要PHP 5.3.2+才能運(yùn)行。一些靈敏的PHP設(shè)置和編譯選項(xiàng)也是必須的,不過(guò)安裝程序(installer)會(huì)警告你任何不兼容的地方。
如果想要從源碼而不是簡(jiǎn)單的從zip壓縮包中安裝軟件包的話(huà),你將需要git,svn或者h(yuǎn)g,這依賴(lài)于軟件包是通過(guò)什么進(jìn)行版本控制的。
Composer是兼容多平臺(tái)的,并且我們力爭(zhēng)使其在Windows,Linux和OSX上的運(yùn)行無(wú)差異。
為了獲取Composer,我們需要做兩件事。第一個(gè)是安裝Composer(前面說(shuō)過(guò)了,這意味下載它到你的項(xiàng)目中):
$ curl -sS https://getcomposer.org/installer | php
這只會(huì)檢查一些PHP設(shè)置,然后下載composer.phar
到你的工作目錄中。這個(gè)文件是Composer二進(jìn)制文件。它是一個(gè)PHAR (PHP
archive),PHP的歸檔格式,也可以像其他命令一樣在命令行上運(yùn)行。
你可以使用--install-dir
選項(xiàng),并且提供一個(gè)目標(biāo)目錄(可以是絕對(duì)或者相對(duì)路徑)從而把Composer安裝到一個(gè)指定的目錄:
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
你可以把這個(gè)文件放到任何你想放的地方。如果你把它放到你的PATH
中,你就可以全局訪(fǎng)問(wèn)它了。在類(lèi)unix系統(tǒng)中你甚至可以使它可執(zhí)行,并且調(diào)用的時(shí)候不需要php
。
你可以執(zhí)行這些命令從而能夠在你的系統(tǒng)上簡(jiǎn)單的訪(fǎng)問(wèn)composer
:
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
然后,只需要執(zhí)行composer
命令來(lái)運(yùn)行Composer,而不是php composer.phar
。
這是在你的機(jī)器上安裝Composer最簡(jiǎn)單的方法。
下載并運(yùn)行Composer-Setup.exe,它將會(huì)安裝最新的Composer版本并且設(shè)置好PATH,然后你就可以在命令中的任何目錄下調(diào)用composer
了。
切換到一個(gè)存在于PATH
環(huán)境變量中的目錄,然后執(zhí)行安裝代碼片段來(lái)下載composer.phar:
C:\Users\username>cd C:\bin
C:\bin>php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
創(chuàng)建一個(gè)新的以.bat
結(jié)尾的composer文件:
C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat
關(guān)閉你當(dāng)前的終端。打開(kāi)一個(gè)新的終端測(cè)試一下:
C:\Users\username>composer -V
Composer version 27d8904
C:\Users\username>
我們接下來(lái)要使用Composer來(lái)安裝項(xiàng)目的依賴(lài)。如果你在當(dāng)前目錄下沒(méi)有一個(gè)叫作composer.json
的文件,請(qǐng)?zhí)?a target="_blank" >基本使用章節(jié)。
為了解決并下載依賴(lài),運(yùn)行install
命令:
$ php composer.phar install
如果你是全局安裝,并且目錄下沒(méi)有phar文件,那么運(yùn)行這個(gè):
$ composer install
如果是上面的例子,這個(gè)操作將會(huì)下載monolog到vendor/monolog/monolog
目錄。
除了下載庫(kù)之外,Composer也會(huì)創(chuàng)建一個(gè)自動(dòng)加載文件,這個(gè)文件能夠自動(dòng)加載Composer下載的庫(kù)中所有的類(lèi)。如果想使用它,只需要在你代碼啟動(dòng)的地方加上如下代碼:
require 'vendor/autoload.php';
哇哦!現(xiàn)在開(kāi)始使用monolog吧! 如果想進(jìn)一步學(xué)習(xí)Composer,繼續(xù)閱讀「基本使用」章節(jié)。 如果想要找需要的package,到Packagist。
聯(lián)系客服