Composer-PHP中用來管理依賴(dependency)
定義
- composer是PHP中用來管理依賴(dependency)關系的工具。你可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer會幫你安裝這些依賴的庫文件。
- Composer 需要PHP5.3.2+ 以上的環境來運行。有幾個敏感的PHP設置和編譯標志也是必需的,但安裝程序會發出警告當存在任何不兼容的情況。
- Composer 是兼容多平台的,其運行適用於Windows,Linux和OSX。
安裝
- linux
- curl -sS https://getcomposer.org/installer | PHP
- 你可以通過 --install-dir 選項指定 Composer 的安裝目錄(它可以是一個絕對或相對路徑)
- 全局安裝
mv composer.phar /usr/local/bin/composer
現在只需要運行 composer 命令就可以使用 Composer 而不需要輸入 php composer.phar。
- windows
下載 https://getcomposer.org/Composer-Setup.exe
windows可能需要設置composer的環境變量 - composer -V 查看版本號
composer -help 查看命令幫助 - 參考文獻
http://docs.phpcomposer.com/ - composer 中國鏡像的使用
http://pkg.phpcomposer.com/
composer.json 文件說明
-
require key
{ "require": { "monolog/monolog": "1.0.*" } }
- require 需要一個 包名稱 (例如 monolog/monolog) 映射到 包版本 (例如 1.0.*) 的對象。
- 包名稱由供應商名稱和其項目名稱構成
-
版本運算符
- 確切版本 1.0.2
- 通配符 1.0.* 1.0的所有版本
- 范圍 >、>=、<、<=、!= ,你可以定義多個范圍,用逗號隔開,這將被視為一個邏輯AND處理。一個管道符號|將作為邏輯OR處理。
- 賦值運算符 1.2,1.2相當於>=1.2,<2.0, 允許1.2以上的任何版本,但不包括2.0。你還會看到它的另一種用法,使用 ~ 指定最低版本,但允許版本號的最后一位數字上升。
-
執行安裝 php composer.phar install
- 接着前面的例子,這將會找到 monolog/monolog 的最新版本,並將它下載到 vendor 目錄。 這是一個慣例把第三方的代碼到一個指定的目錄 vendor。如果是 monolog 將會創建 vendor/monolog/monolog 目錄。
- 另一件事是 install 命令將創建一個 composer.lock 文件到你項目的根目錄中。
- 如果你正在使用Git來管理你的項目, 你可能要添加 vendor 到你的 .gitignore 文件中。 你不會希望將所有的代碼都添加到你的版本庫中。
-
composer.lock - 鎖文件
- 在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項目的特定版本。
- 使用 update 命令。這將獲取最新匹配的版本(根據你的 composer.json 文件)並將新版本更新進鎖文件。php composer.phar update
- 如果只想安裝或更新一個依賴,你可以白名單它們:
php composer.phar update monolog/monolog [...]
-
自動加載
-
對於庫的自動加載信息,Composer 生成了一個 vendor/autoload.php 文件。你可以簡單的引入這個文件,你會得到一個免費的自動加載支持。
require 'vendor/autoload.php'; -
你可以在 composer.json 的 autoload 字段中增加自己的 autoloader。
{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
-
你可以定義一個從命名空間到目錄的映射。此時 src 會在你項目的根目錄,與 vendor 文件夾同級。例如 src/Foo.php 文件應該包含 Acme\Foo 類。
添加 autoload 字段后,你應該再次運行 install 命令來生成 vendor/autoload.php 文件。 -
引用這個文件也將返回 autoloader 的實例,你可以將包含調用的返回值存儲在變量中,並添加更多的命名空間。這對於在一個測試套件中自動加載類文件是非常有用的,例如。
$loader = require 'vendor/autoload.php'; $loader->add('Acme\\Test\\', __DIR__);
-
使用示例
-
一個最小化的composer.json,切換到項目目錄,新建一個composer.json
{ "require-dev": { "phpunit/phpunit": "4.3.*" } }
-
執行 composer install
- 會創建vendor目錄,里面就是相關的代碼。
- 會創建composer.lock文件
- 會生成 vendor/autoload.php 是自動加載的php文件