#### 1. 前言 --- 首先要搞清楚的一件事情是,所有的依賴都定義在composer.json中。 在指定安裝擴展包的時候,并不是非要指明一個精確的版本。 那么就有可能發(fā)生這么一個情況,對于同一份composer.json,我們在不同時刻拉取到的依賴文件可能不同(因為composer會在滿足條件的情況下去拉取最新的那份依賴),從而導致一些異常情況。 `composer update` 和 `composer install` 正是為了解決這個問題而出現(xiàn)的。 #### 2. composer install 和 composer update 的區(qū)別 ---- **相同點** 當本地不存在 `composer.lock` 文件時, composer instal 和 composer update 作用相同, 都會去讀取 composer.json 中定義的依賴, 并且去拉取符合條件的最新版本的依賴, 然后把所拉取到的依賴放入 vendor 目錄下, 最后把所有拉取的依賴的精確版本號寫入 composer.lock 文件 **不同之處** 當本地存在 `composer.lock` 文件時, composer install 將會去讀取 composer.lock 中存儲的版本號, 并且以此標準去下載依賴; 而 composer update 則不會去讀取 composer.lock 中的版本號, 他仍然會去讀取 composer.json 中定義的依賴, 生成新的 composer.lock 文件 **composer install 和 composer update 的選擇** 初始安裝依賴優(yōu)先使用 composer install, 因為他會去讀取 composer.lock 文件, 按照精確的版本號拉取依賴。 不要輕易的使用 composer update 更新所有的依賴, 因為它會去讀取 composer.json 中依賴,拉取滿足條件的最新依賴包,很容易出現(xiàn)問題。 當更新某個依賴時,可以使用 composer update ``` composer update topthink/think-queue=2.* ``` #### 3. composer require ---- composer require 用于引入新的擴展包, 并且會生成新的 composer.lock 文件