原文轉自微信公衆號:qq1005349393php
Composer介紹shell
Composer 是 PHP 的一個<font color='red'>包依賴</font>管理工具。咱們能夠在項目中聲明所依賴的外部工具庫,Composer 會幫你安裝這些依賴的庫文件,有了它,咱們就能夠很輕鬆的使用一個命令將其餘人的優秀代碼引用到咱們的項目中來。Composer 默認狀況下不是全局安裝,而是基於指定的項目的某個目錄中(例如 vendor)進行安裝。Composer 須要 PHP 5.3.2+ 以上版本,且須要開啓 openssl。Composer 可運行在 Windows 、 Linux 以及 OSX 平臺上。json
Composer安裝windows
1.Windows安裝 Wondows 平臺上,咱們只須要下載 Composer-Setup.exe 後,一步步安裝便可。須要注意的是你須要開啓 openssl 配置,咱們打開 php 目錄下的 php.ini,將 extension=php_openssl.dll 前面的分號去掉就能夠了。 安裝完成以後,檢測是否安裝成功。可使用安全
composer --version
命令查看,以下圖: 2.Linux安裝微信
// 下載composer文件 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" // 使用PHP解釋器安裝composer php composer-setup.php // 移動到系統可執行文件目錄,方便咱們後期直接使用composer命令進行全局調用 mv composer.phar /usr/local/bin/composer
3.Mac Os安裝composer
------直接安裝 // 下載並安裝 curl -sS https://getcomposer.org/installer | php // 移動到可執行文件目錄,便於全局調用 sudo mv composer.phar /usr/local/bin/composer ------使用Mac上面的brew包管理工具安裝 brew install composer // 檢測是否安裝成功 composer --version
4.如何切換composer鏡像源 如今阿里處理本身的composer鏡像源,而且可以作到與Packagist官網實時同步,推薦使用阿里的composer鏡像源.curl
// 切換鏡像源 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ // 取消配置 composer config -g --unset repos.packagist // 只針對當前項目切換鏡像源(非全局切換) composer config repo.packagist composer https://mirrors.aliyun.com/composer/ // 取消當前項目的鏡像源 composer config --unset repos.packagist
5.composer更新 composer的更新可使用自身的命令來更新工具
composer selfupdate
Composer使用優化
Composer的使用,咱們常見的幾個操做以下:
1.composer install 當咱們的composer.json文件中增長了項目的依賴關係,以下:
{ "require": { "topthink/framework": "5.0.5", } }
此時咱們使用 composer install時,會自動根據包中的依賴關係,來安裝相對應的包。
2.composer update 該命令會根據composer.json配置文件中包依賴以及相應的版本,更新包的版本,可是該命令會將全部的包都更新到最新版本,在實際的項目中須要謹慎使用,尤爲是在生產環境上面。
3.composer require 第1點中,咱們講到了如何去根據composer.json配置文件中的包依賴配置,安裝對應的包。該命令能夠不須要根據配置文件,而是去手動安裝一個包。安裝完以後,對應的依賴配置會自動添加在composer.json配置文件中。
4.composer remove 該命令能夠移除指定的包依賴,例如咱們不須要依賴某個包直接使用該命令+包名
composer remove "topthink/framework": "5.0.5"
一樣的,執行該命令以後,composer.json配置文件中的包依賴會自動刪除,無需咱們手動操做。
5.composer show 該命令主要是爲了查看當前項目已經安裝的包相關信息。
// 查看全部已經安裝的包的信息 composer show // 指定查看已經安裝的包的信息 composer show topthink/framework
Composer.json與Composer.lock的區別是什麼
咱們在使用composer的過程當中會發現,當咱們執行composer update等命令,會發現無心中多了一個composer.lock文件。那這個文件主要是幹什麼的呢?該文件主要是管理包版本使用的,當咱們在使用composer update命令時,composer會自動根據composer.json的包版本依賴,生成對應的composer.lock文件,當咱們下次在執行composer命令的時候,首先也會去讀取composer.lock文件的內容。
Composer版本約束
在咱們使用composer安裝包時,不得不考慮的就是一個版本問題,由於不一樣的版本,存在兼容性問題,所以咱們在使用該工具安裝包時須要特別的注意包版本,若是使用不當很容易致使項目由於包版本問題癱瘓。常見的幾種以下: 1.精準版本 明確要安裝到那個版本,如須要安裝包的版本是1.2.3
"topthink/think-captcha": "v1.2.3",
2.通配符 既知足指定範圍便可,以下範圍在5.0到5.1之間
"topthink/framework": "5.0.*",
3.範圍 範圍經常使用的操做符有>,>=,<,<=,!=。你能夠定義多個範圍,使用空格或者逗號 , 表示邏輯上的與,使用雙豎線 || 表示邏輯上的或。其中與的優先級會大於或。
// 表示大於等於0.90而且小於3.0的版本 "ruflin/elastica": ">=0.90 <3.0",
4.波浪符 ~ 該操做符限制最小版本號。
容許表達式中的最後一位版本號達到最大值
如~1.2與>=1.2 <2.0相等,~1.5.6與>=1.5.6 < 1.6.0相等。也就是主版本號與次版本號保持不變,修復版本號能夠達到最大值。 5.折音符 ^ 該操做符約束鎖定最大版本號。
鎖定表達不變的是第一位主版本號,容許升級版本到安全的版本號
如^1.2就等於>=1.2 <2.0,^1.2.3就等於>=1.2.3 < 2.0.0。
語義化
什麼是語義化呢?說的簡單一點便是版本號管理。咱們的包通常分文以下格式組成: php 主版本號+次版本號+修復版本
如上面的例子中,咱們都提到了一些包的版本號是x.x.x。第一位就是主版本號,第二位就是次版本號,第三位就是針對一些bug修復來的修復版本號。具體的能夠參考https://semver.org/lang/zh-CN/
Composer使用優化
1.composer 加載類型 composer加載類型包括classmap,psr-0,psr-4,file.psr-0逐漸的被拋棄了,因爲一些老項目還在使用該規則,所以部分項目仍在使用。大多數的是使用psr-4。classmap是包文件的映射處理,下面有講。file主要加載一些helper的操做。 1.composer dump-autoload -o 該命令會根據包的命令空間和路徑生成文件映射,當去加載包的時候,會根據映射去加載包文件。這樣會加快咱們的包文件訪問速度。當咱們執行了該命令,能夠查看以下如的界面。被圈出來的就是類映射配置。 composer具體怎麼去處理這個加載順序邏輯,咱們能夠經過查看composer加載類的處理順序。下圖中圈出的方法,首先就是去加載classmap,沒找到在去加載psr-4。
2.composer dump-autoload -a 該命令主要的是功能是,當在咱們1中執行了命令,會生成映射文件。若是當去加載映射文件沒有找到時,則提示包文件不存在。