咱們已經安裝了Composer,那麼如何在咱們的項目中使用Composer呢?接下來的部分,我將對實際項目中如何使用Composer進行總結。php
要開始在你的項目中使用 Composer,你只須要一個composer.json文件。該文件包含了項目的依賴和其它的一些元數據。從該文件的後綴名能夠知道,這是一個JSON格式的文件。json
下面經過一個最簡單的示例項目來講明如何使用Composer。項目代碼結構以下:服務器
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php
接下來,咱們要引入Composer。在項目的根目錄創建一個composer.json文件。代碼結構以下:app
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php ├── composer.json
好比咱們的項目如今須要依賴monolog/monolog
這樣的一個包,那接下來,咱們就須要在composer.json中寫入如下內容:composer
{ "require": { "monolog/monolog": "1.0.*" } }
能夠看到,require
須要一個包名稱(例如monolog/monolog
)映射到包版本(例如:1.0.*)的對象。而這裏最重要的兩個概念就是包名稱和包版本。工具
igorw/json
和seldaek/json
。 包版本
包版本的門道就多了。好比在前面的例子中,咱們引入的monolog版本指定爲1.0.*
。這表示任何從1.0
開始的開發分支,它將會匹配1.0.0
、1.0.2
或者1.0.20
。
版本約束能夠用幾個不一樣的方法來指定。ui
使用方式 | 示例 | 描述 |
---|---|---|
確切的版本號 | 1.0.2 |
能夠指定包的確切版本 |
範圍 | >=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2 |
經過使用比較操做符能夠指定有效的版本範圍。有效的運算符:> 、>= 、< 、<= 、!= 。咱們能夠定義多個範圍,用逗號隔開,這將被視爲一個邏輯AND處理。一個管道符號|將做爲邏輯OR處理。AND的優先級高於OR。 |
通配符 | 1.0.* |
咱們能夠使用通配符* 來指定一種模式。1.0.* 與>=1.0,<1.1 是等效的。 |
賦值運算符 | ~1.2 |
這對於遵循語義化版本號的項目很是有用。~1.2 至關於>=1.2,<2.0 。 |
如今咱們的示例項目已經有了composer.json文件,接下來咱們就須要經過composer命令來安裝依賴。安裝依賴包步驟以下:spa
composer install
命令。接下來就是等待安裝依賴包的過程,安裝完成後,咱們的項目目錄將會變成這個樣子:code
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php ├── vendor/ ├── composer.json ├── composer.lock
多了一個vendor文件夾和一個composer.lock文件。對於vendor目錄,這是composer的一個慣例,把第三方的代碼到一個指定的目錄vendor。對象
在安裝依賴後,Composer將把安裝時確切的版本號列表寫入composer.lock文件。這將鎖定該項目的特定版本。
爲了保證版本一致問題,請提交你應用程序的composer.lock(包括composer.json)到版本庫中。
這是很是重要的,由於install命令將會檢查鎖文件是否存在,若是存在,它將下載指定的版本(忽略composer.json文件中的定義)。
這意味着,任何人創建項目都將下載與指定版本徹底相同的依賴。咱們的持續集成服務器、生產環境、你團隊中的其餘開發人員、每件事、每一個人都使用相同的依賴,從而減輕潛在的錯誤對部署的影響。
若是不存在composer.lock文件,Composer將讀取composer.json並建立鎖文件。同時,這也意味着若是咱們的的項目依賴更新了新的版本,咱們將不會得到任何更新。此時要更新依賴版本則需使用update
命令。這將獲取最新匹配的版本(根據composer.json文件)並將新版本更新進鎖文件。
composer update
Packagist是什麼?Packagist是Composer的主要資源庫。一個Composer的庫基本上是一個包的源:記錄了能夠獲得包的地方。Packagist的目標是成爲你們使用庫資源的中央存儲平臺。這意味着咱們能夠require
那裏的任何包。
咱們能夠訪問https://packagist.org來瀏覽和搜索咱們須要的資源包。
歸根到底,Composer是一個依賴管理的工具。咱們使用Composer將對應的依賴包下載下來之後,如何在咱們的項目中進行使用呢?對於這一點,Composer也想的很周到。
已經存在的庫,咱們要把它加載到咱們的項目中,對於庫的自動加載信息,Composer生成了一個vendor/autoload.php
文件。咱們能夠簡單的引入這個文件,這樣就會獲得一個免費的自動加載支持。而這一切都是Composer來幫助咱們完成的,咱們只須要在應用層使用便可。例如:
require 'vendor/autoload.php';
這使得咱們能夠很容易的使用第三方代碼。例如:若是項目依賴monolog,咱們就能夠像這樣開始使用這個類庫,而且他們將被自動加載。
$log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');