Composer是PHP的一個依賴管理工具。你能夠在你的項目裏聲明你依賴的庫,而後Composer會幫你解決如下問題:找到這些庫以及這些庫所依賴的庫能夠安裝的版本,而後進行安裝。因此Composer是一個依賴管理工具,而不是一個包管理工具(相似Yum或者Apt),由於它是基於每一個項目去管理這些包,把這些包安裝到項目裏的某個目錄。php
Composer要求PHP 5.3.2+
版本以及一些PHP的配置,若是有不兼容的狀況發生,在安裝過程當中會有提示。有兩種方式安裝Composer,一是本地安裝,而是全局安裝。git
本地安裝會把Composer安裝到當前的目錄下。運行如下命令進行安裝:github
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '070854512ef404f16bac87071a6db9fd9721da1684cd4589b1196c3faf71b9a2682e2311b36a5079825e155ac7ce150d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" $ php composer-setup.php $ php -r "unlink('composer-setup.php');"
一共4條命令,它們分別執行如下的操做:json
下載安裝文件到當前目錄。安全
檢驗安裝文件的SHA-384散列。bash
運行安裝文件。app
刪除安裝文件。composer
而後咱們就能夠運行執行如下命令來運行Compoer了:工具
$ php composer.phar
須要注意的是,第二步檢查文件的散列,每個版本安裝文件的散列值都會不一樣的,因此每次安裝最好都到下載頁面去獲取安裝代碼。或者若是你以爲沒有檢查安裝文件的必要的話,也能夠跳過這條命令去執行下面的命令。固然從安全角度考慮,不建議這麼作。ui
所謂全局安裝,其實就是把Composer安裝到PATH
變量裏的某個目錄中,這樣你就能夠從任何地方去訪問Composer了。我的也建議這麼作。咱們只須要把本地安裝的composer執行文件移動到全局目錄下便可:
$ mv composer.phar /usr/local/bin/composer
這樣你就能夠在任何地方直接運行composer
命令了。後續如沒有特別說明,都是在全局安裝的狀況下執行命令。
Composer安裝時支持3個選項。
經過--install-dir
選項能夠修改Composer的安裝路徑,例如若是咱們想把Composer安裝在bin
目錄下:
$ php composer-setup.php --install-dir=bin
經過--filename
選項,咱們能夠修改Composer執行文件的名稱(默認爲composer.phar)。例如:
$ php composer-setup.php --filename=composer
若是想安裝指定版本的Composer,可使用--version
選項:
$ php composer-setup.php --version=1.0.0-alpha8
除了上面的安裝方式外,還能夠直接下載執行文件,請到下載頁面進行下載。
更新Composer很簡單,只須要執行如下命令:
$ composer selfupdate Updating to version 1.1.2 (stable channel). Downloading: 100% Use composer self-update --rollback to return to version 06c45623d76457562cecbcf2245f904aa0f63a87 # 或者(二者是等效的) $ composer self-update
若是想進行版本的回滾,可使用如下命令:
$ composer selfupdate --rollback Rolling back to version 2016-05-26_16-11-16-06c4562.
安裝完Composer後,想要在項目裏開始使用它,你惟一須要作的就是建立一個composer.json
文件。這個文件描述了你這個項目所依賴的包以及一些其餘的元信息。
經過require這個配置項,咱們能夠指定項目的依賴。假設咱們項目須要用到monolog/monolog
這個日誌庫,那麼咱們能夠這樣配置composer.json
文件:
{ "require": { "monolog/monolog": "1.0.*" } }
require
的值是一個對象,對象裏的每個鍵對應一個依賴,經過鍵名爲包的名稱,鍵值爲包的版本。
包名由vendor名和項目名組成,這樣能夠保證包名的惟一性。項目名能夠重複,可是vendor名每一個人都不同。以monolog/monolog
爲例,vendor名和項目名都是monolog
。
在上面的例子中,咱們要求monolog/monolog
的版本爲1.0.*
,表示任何的1.0的開發分支版本都知足要求。版本的指定方式有不少種,在後面的文章中會進行詳細的解說。
建立完composer.json
文件並配置好require
後,咱們就能夠安裝依賴了,只須要運行如下的命令:
$ composer install Loading composer repositories with package information Updating dependencies (including require-dev) - Installing monolog/monolog (1.0.2) Downloading: 100% Writing lock file Generating autoload files
Composer會根據上面配置的版本約定下載最新版本的monolog/monolog
到默認目錄vendor
下。
運行完上面的install
命令後,你會發現除了vendor
目錄,還會多了一個composer.lock
文件。這個文件保存了項目已經安裝的每一個包的具體版本。在運行install
命令的時候,若是存在這個文件,則Composer會根據這個文件下載對應版本的包。這樣的好處是能夠保證各個環境的依賴的版本一致,不然若是沒有這個文件,每一個環境在運行install
時可能下載到的版本就不一致了。因此建議把composer.lock
文件也放到版本控制裏。
要更新依賴,只須要運行update
命令:
# 更新全部的依賴 $ composer update # 更新某個依賴 $ composer update monolog/monolog
下載完依賴後,咱們能夠開始使用依賴所提供的庫了。Composer會爲下載的庫建立自動加載文件vendor/autoload.php
,咱們只須要包含這個文件就能輕鬆的調用各個庫的功能。以monolog/monolog
爲例:
$log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');
咱們不用關心庫文件的加載問題,Composer的autoload.php
文件已經幫咱們處理好了各個庫的自動加載。
至此,咱們安裝好了Composer,也知道了它的基本用法,基本能夠快樂的玩耍了。可是衆所周知,因爲某些緣由,github和packagist在國內有時會訪問不了,或者速度很慢,這就會致使使用Composer時的各類不爽。還好咱們國內有個鏡像能夠解決這個問題,只須要把倉庫的路徑修改成鏡像的路徑便可。
有兩種方式,一是修改Composer的全局配置(推薦的方式):
$ composer config -g repo.packagist composer https://packagist.phpcomposer.com
這個命令會修改Composer的全局配置文件config.json
。二是修改單個項目的配置:
$ composer config repo.packagist composer https://packagist.phpcomposer.com
這個命令會修改項目下的composer.json
文件,添加以下的配置信息:
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
固然你也能夠直接手動修改composer.json
文件,添加上面那段配置信息。
詳情請訪問:http://pkg.phpcomposer.com/。