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