1、如何尋找需要的項目或源碼
進入網站後,可以查詢我們想要用的庫文件,以monolog爲例:
第一個排名下載量很高。所以我們就用這個了。我們點進去 https://packagist.org/packages/monolog/monolog
上面圈起來並備註的地方,比較重要
二.使用composer.json來加載和下載類庫源碼
新建一個文件夾,建立一個composer.json文件,文件內容如下
{
"require":{
"monolog/monolog":"1.24.0" //包名稱:包版本
}
}
~
保存後在同級目錄執行
composer install
命令執行後,開始自動下載,下載完畢後的目錄如下所示
文件結構是:vendor文件夾+composer.lock+composer.json。composer.lock等會再說。進入vendor
裏面是類庫文件,我們下載的 composer,會將 composer 依賴的 psr 一起下載下來。autoload.php等會再說,它是一個自動加載類庫,很強大,我們只需要加載找個文件,就能自動加載使用其他的類庫了,不需要再手動加載。
3. composer.lock
打開這個文件,發現這幾乎和composer.json是一樣的格式和數據,也是各種約束關係,require文件等。
在安裝依賴後,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項目的特定版本。以後就會以這個版本爲主,只要有這個文件在,就會忽略所有的composer.json文件。這是非常重要的,因爲 install 命令將會檢查鎖文件是否存在,如果存在,它將下載composer.lock指定的版本(忽略 composer.json 文件中的定義)。
如果不存在 composer.lock 文件,Composer 將讀取 composer.json 並創建鎖文件。
我們想想這樣有什麼作用呢?假設一個場景,多人開發,肯定會有人新的人開發完成將要後續開發,那麼他肯定會去更新composer.json的依賴關係,那麼其他人更新後,也會同樣去更新,這樣就亂了。他本來不想去更新,只想用原來的。所以有個這個composer.lock 文件,所有的人都會用一樣的依賴關係版本。等全部都開發好了。再將這個composer.lock文件刪掉就可以了。
這意味着如果你的requie的依賴更新了新的版本,你也不會獲得任何更新。因爲有composer.lock文件存在,此時要想更新你的依賴版本請使用 update 命令。這將獲取最新匹配的版本(根據你的 composer.json 文件)並將新版本更新進鎖文件composer.lock
如果我們確實需要更新依賴呢?我們可以使用 update 命令,它將重新生成composer.lock文件
composer update //更新所有包,慎用
composer update 包名稱:包版本 //更新指定某個包
composer require 包名稱:包版本 //更新指定某個包
4. 包版本的規則
名稱 | 實例 | 描述 |
確切的版本號 | 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 。想要了解更多,請閱讀下一小節 |
5. 下一個重要版本(波浪號運算符)
~ 最好用例子來解釋: ~1.2 相當於 >=1.2,<2.0,而 ~1.2.3 相當於 >=1.2.3,<1.3。正如你所看到的這對於遵循 語義化版本號 的項目最有用。一個常見的用法是標記你所依賴的最低版本,像 ~1.2 (允許1.2以上的任何版本,但不包括2.0)。由於理論上直到2.0應該都沒有向後兼容性問題,所以效果很好。你還會看到它的另一種用法,使用 ~ 指定最低版本,但允許版本號的最後一位數字上升。
默認情況下只有穩定的發行版纔會被考慮在內。如果你也想獲得 RC、beta、alpha 或 dev 版本,你可以使用 穩定標誌。你可以對所有的包做 最小穩定性 設置,而不是每個依賴逐一設置。
6. autoload.php
前面說過,在vendor文件夾下面有一個autoload.php文件,這個文件有大大的用戶,他是一個自動加載的文件,我們只要加載了它,那麼我們就相當於講其他的類庫文件都加載了:
require 'vendor/autoload.php';
加載這一句就可以了。比如,我們在加載了這一句後,想調用mongolog,我們就可以直接用了,不需要另外加載它。
7.create-project
我們常見的框架symfony 和 Laravel 框架 可以使用這個命令下載
composer create-project laravel/laravel your-project-name 2.1.2
composer create-project symfony/framework-standard-edition your-project-name 2.1.2
8. composer的一些常用的命令:
composer list 列出所有可用的命令
composer init 初始化composer.json文件(就不勞我們自己費力創建啦),會要求輸入一些信息來描述我們當前的項目,還會要求輸入依賴包
composer install 讀取composer.json內容,解析依賴關係,安裝依賴包到vendor目錄下
composer update 更新最新的依賴關係到compsoer.lock文件,解析最新的依賴關係並且寫入composer.lock文件
composer search packagename 搜索包,packagename替換爲你想查找的包名稱
composer require packagename 添加對packagename的依賴,packagename可修改爲你想要的包名稱
composer show packagename
composer self-update 更新 composer.phar文件自身
composer command --help 以上所有命令都可以添加--help選項查看幫助信息