?
This document uses PHP Chinese website manual Release
Composer 是一個(gè) 杰出 的依賴(lài)管理器。在 composer.json 文件中列出你項(xiàng)目所需的依賴(lài)包,加上一點(diǎn)簡(jiǎn)單的命令,Composer 將會(huì)自動(dòng)幫你下載依賴(lài)包并設(shè)置自動(dòng)加載。Composer 可以類(lèi)比為 node.js 世界的 NPM 或 Ruby 世界的 Bundler。
現(xiàn)在已經(jīng)有許多 PHP 第三方包已兼容 Composer,隨時(shí)可以在你的項(xiàng)目中使用。這些 “包(package)” 都已列在 Packagist 上了,這是一個(gè)官方的 Composer 兼容包倉(cāng)庫(kù)。
如何安裝 Composer
按照官方指導(dǎo) 下載 Composer 的最安全的方式。 這種方式在安裝過(guò)程中會(huì)檢驗(yàn)安裝腳本不被損壞或篡改。 安裝腳本默認(rèn)是將 Composer 安裝到當(dāng)前項(xiàng)目的 本地 目錄下面。
我們建議將 Composer 安裝到 全局 環(huán)境中(例如復(fù)制到 /usr/local/bin 目錄),如下:
mv composer.phar /usr/local/bin/composer
注意: 如果上述過(guò)程失敗是由于權(quán)限的原因,請(qǐng)重新執(zhí)行 mv 并在此指令前面添加 sudo。
運(yùn)行本地安裝的 Composer 使用 php composer.phar 命令;運(yùn)行全局安裝的 Composer 直接使用 composer 命令。
Windows環(huán)境下安裝
對(duì)于Windows 的用戶(hù)而言最簡(jiǎn)單的獲取及執(zhí)行方法就是使用 ComposerSetup安裝程序,它會(huì)執(zhí)行一個(gè)全局安裝并設(shè)置你的 $PATH,所以你在任意目錄下在命令行中使用 composer。
如何手動(dòng)安裝 Composer
手動(dòng)安裝 Composer 是一個(gè)復(fù)雜的技術(shù)活兒,僅管如此還是有許多開(kāi)發(fā)者有各種原因喜歡使用這種交互式的應(yīng)用程序安裝 Composer。在安裝前請(qǐng)先確認(rèn)你的PHP安裝項(xiàng)目如下:
正在使用一個(gè)滿(mǎn)足條件的 PHP 版本
.phar 文件可以正確的被執(zhí)行
相關(guān)的目錄有足夠的權(quán)限
相關(guān)有問(wèn)題的擴(kuò)展沒(méi)有被載入
相關(guān)的 php.ini 設(shè)置已完成
由于手動(dòng)安裝沒(méi)有執(zhí)行這些檢查,你必須自已衡量決定是否值得做這些事,以下是如何手動(dòng)安裝 Composer :
curl -s https://getcomposer.org/composer.phar -o $HOME/local/bin/composer chmod +x $HOME/local/bin/composer
路徑 $HOME/local/bin (或是你選擇的路徑) 應(yīng)該在你的 $PATH 環(huán)境變量中。這將會(huì)影響 composer 這個(gè)命令是否可用.
當(dāng)你遇到文檔指出執(zhí)行 Composer 的命令是 php composer.phar install時(shí),你可以使用下面命令替代:
composer install
本章節(jié)會(huì)假設(shè)你已經(jīng)安裝了全局的 Composer。
如何設(shè)置及安裝依賴(lài)
Composer 會(huì)通過(guò)一個(gè) composer.json 文件持續(xù)的追蹤你的項(xiàng)目依賴(lài)。 如果你喜歡,你可以手動(dòng)管理這個(gè)文件,或是使用 Composer 自己管理。composer require 這個(gè)指令會(huì)增加一個(gè)項(xiàng)目依賴(lài),如果你還沒(méi)有 composer.json 文件, 將會(huì)創(chuàng)建一個(gè)。這里有個(gè)例子為你的項(xiàng)目加入 Twig 依賴(lài)。
composer require twig/twig:~1.8
另外,composer init 命令將會(huì)引導(dǎo)你創(chuàng)建一個(gè)完整的 composer.json 文件到你的項(xiàng)目之中。無(wú)論你使用哪種方式,一旦你創(chuàng)建了 composer.json 文件,你可以告訴 Composer 去下載及安裝你的依賴(lài)到 vendor/ 目錄中。此命令也適用于你所下載的已經(jīng)帶有 composer.json 文件的項(xiàng)目:
composer install
接下來(lái),添加這一行到你應(yīng)用的主要 PHP 文件中,這將會(huì)告訴 PHP 為你的項(xiàng)目依賴(lài)使用 Composer 的自動(dòng)加載器。
<?php require 'vendor/autoload.php';
現(xiàn)在你可以使用你項(xiàng)目中的依賴(lài),且它們會(huì)在需要時(shí)自動(dòng)完成加載。
更新你的依賴(lài)
Composer 會(huì)建立一個(gè) composer.lock 文件,在你第一次執(zhí)行 composer install 時(shí),保存下載的每個(gè)依賴(lài)包的準(zhǔn)確的版本號(hào)。假如你要分享你的項(xiàng)目給其他開(kāi)發(fā)者,并且 composer.lock 文件也在你分享的文件之中的話(huà)。 當(dāng)他們執(zhí)行 composer install 這個(gè)命令時(shí),他們將會(huì)得到與你一樣的依賴(lài)版本。當(dāng)你要更新你的依賴(lài)時(shí)請(qǐng)執(zhí)行 composer update。部署項(xiàng)目時(shí)只使用 composer install而不要使用 composer update 命令,否則再生產(chǎn)環(huán)境上安裝的依賴(lài)和你預(yù)期的不一致。
當(dāng)你需要靈活的定義你所需要的依賴(lài)版本時(shí),這是最有用。 例如,~1.8 表示 “任何大于 1.8.0,但小于 2.0.x-dev 的版本”。你也可以使用通配符 * 在 1.8.* 之中?,F(xiàn)在 Composer 在執(zhí)行 composer update 時(shí)將升級(jí)你的所有依賴(lài)到你限制的最新版本。
更新通知
要接收關(guān)于新版本的更新通知。你可以注冊(cè) VersionEye,這個(gè) web 服務(wù)可以監(jiān)控你的 Github 及 BitBucket 帳號(hào)中的 composer.json 文件,并且當(dāng)包有新更新時(shí)會(huì)發(fā)送郵件給你。
檢查你的依賴(lài)安全問(wèn)題
Security Advisories Checker 是一個(gè) web 服務(wù)和一個(gè)命令行工具,二者都會(huì)仔細(xì)檢查你的 composer.lock 文件,并且告訴你任何你需要更新的依賴(lài)。
處理 Composer 全局依賴(lài)
Composer 也可以處理全局依賴(lài)和他們的二進(jìn)制文件。用法很直接,你所要做的就是在命令前加上 global 前綴。如果你想安裝 PHPUnit 并使它全局可用,你可以運(yùn)行下面的命令:
composer global require phpunit/phpunit
這將會(huì)創(chuàng)建一個(gè) ~/.composer 目錄存放全局依賴(lài),要讓已安裝依賴(lài)的二進(jìn)制命令隨處可用,你需要添加 ~/.composer/vendor/bin 目錄到你的 $PATH 變量。