PHP Composer 的正確使用姿勢
Composer 是 PHP 的一個依賴管理工具。它允許你申明專案所依賴的程式碼庫,它會在你的專案中為你安裝他們。詳細說明文件見Composer 中文文件,本文將列出的是工作中遇到的問題及解決方案。
阿里雲2018雙11雲服務只需99.5元
1核2G記憶體,¥99.5/年
2核4G記憶體,¥545.00/1年
2核4G記憶體,¥927.00/2年
2核4G記憶體,¥1227.00/3年
2核8G記憶體,¥2070.00/3年
直達入口:http://t.cn/EZ14u8r
1. 開發過程中,特別是團隊協作中,我們經常會遇到的問題是 composer.lock 檔案會經常被修改,而且每個人的都會不一樣?!
解決這個問題,我們需要的是理解 composer 幾個命令之間的區別:
composer install
install 命令是讀取 composer.json 內容,處理了依賴關係後,將依賴包安裝到 vendor 目錄下。需要注意的是,如果說之前已經處理過相應的 composer.json 並已經生成了相應的 composer.lock 檔案,那麼 composer 會優先選擇讀取 composer.lock 裡的內容來處理,如果未找到相應內容才會從 composer.json 中讀取。很明顯,這條命令是不會輕易修改 composer.lock檔案的。
comoser update
如其名,update 的工作是升級依賴包,它會從 composer.json 入手,對於配置的版本類似 x.x.* 的檔案,它會去查詢是否有更高的版本,如果有,它會執行更新,並且修改 composer.lock 檔案。很明顯,這條命令是會經常修改 composer.lock檔案的。
如果說,在我們的專案開發過程,如是隻想更新某一個依賴包時,就會比較麻煩。當然,你可以每個包都指定具體的版本,但是這對於專案管理也是比較頭疼的。
composer require
解決上述問題,這裡需要介紹新的命令 composer require ,該命令是可指定單獨某一個依賴包進行更新。這也就是說我們可以較小粒度的修改 composer.lock 檔案了。
回到問題上,我們為了保持開發人員之間或者說開發人員與線上環境之間的依賴包版本的一致性,我們需要保證的是 composer.lock 檔案儘量不被修改,且大部分人員只使用 install 命令,包括線上伺服器部署時嚴格使用 install 命令。如果有需要更新的包,應該由特定人員通過使用 require 命令升級後提交 composer.lock 檔案。
綜上所述,composer 在專案管理中的正確使用姿勢是,特定人員生成(install/update)或者更新(update/require) composer.lock 檔案,其他人員只使用(install) composer.lock檔案。
2. 在公司各個專案組之間,一定會存在很多通用的功能,那麼如何優雅的使用其它專案組給我提供的元件呢?
首先我們能想到的就是我們常用的版本控制管理(vcs)的使用,ok,這樣確實是能解決問題的,但是,對於許可權控制嚴格的公司,這,我想應該能算得上是一種災難了吧。
這裡我想到的方法是,能不能用 composer 來管理呢?
答案肯定是可以的,別人都能釋出包,我們肯定也可以,但是,如果說特別公用甚至可以公開的包,絕對沒問題。可是,要是有公司私密資訊的呢???
composer 為我們提供了打包方法 satis 和 proxy 兩種,我使用 satis 解決了,請移步至SDK 編寫規範及使用方法說明