Composer 是 PHP5.3以上 的一個依賴管理工具。你可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer 會安裝這些依賴的庫文档。它僅僅是一個依賴關係的管理,如同在iOS開發中Swift 和 Objective-C工程中使用的CocoaPods一樣。
安裝composer
安裝前需確保系統PHP版本在5.3以上,在終耑中執行以下命令下載Composer可執行文档:
curl -sS https://getcomposer.org/installer | php
此操作會下載最新版本到當前的工作目錄中。然後在當前路徑下就可以操作了,如查看Composer版本:
php composer.phar --version
Composer version 1.4.2 2017-05-17 08:17:52
如果下載失敗也不用糾結了,直接去手動下載合適的版本https://getcomposer.org/download/,結果的一樣的。
這應該算是局部安裝了,當跳出當前目錄還是無法正常使用,這肯定不是我們所期望的。如果要想全局生效需把composer.phar移到系統/usr/local/bin/目錄下:
mv composer.phar /usr/local/bin/composer
然後在全部就可以使用composer,再也不用每次都輸入長長的php composer.phar了。
至此算是安裝完畢。
版本更新
如果有則更新到最新版本
composer selfupdate
更新完後會提示Use composer self-update --rollback to return to version 1.4.1可以回退到上一版本。
使用composer
在我們的項目目錄下創建文档composer.json添加所需要的依賴庫的信息,例如需要"monolog/monolog","phpmailer/phpmailer"這兩個庫,json格式如下:
{ "require": { "monolog/monolog": "1.0.*", "phpmailer/phpmailer": "~5.2" } }
然後在終耑執行:
composer install
composer根據json配置開始下載所依賴的庫文档,安裝完畢後(若無)會生成一個composer.lock文档,如果你熟悉cocoapods的話應該知道也有個文档Podfile.lock。
composer.lock作用鎖定當前的配置文档,如果已存在,在下次執行install操作時會自動讀取composer.lock中的信息,即使你已經修該了composer.json文档此時也不會生效。
composer update
此操作會直接從composer.json文档讀取信息,下載庫文档,然後同步更新composer.lock。此時這個操作可以看作先刪除composer.lock文档,然後在執行install命令操作。
composer update monolog/monolog
指定某一個庫的更新,其他的沒有影響。
以上爲compose的簡單使用,有了它再使用第三方庫操作起來是不是感覺很簡單、很方便。
關於composer.json文档
以上我們使用的.json文档就一個require屬性,其實composer還支持其他很多屬性供我們添加一些其他配置信息。部分屬性如下:
name
description
versiontypekeywords
homepage
time
license
authors...
具體屬性代表的意義及支持的全部屬性參看https://getcomposer.org/doc/04-schema.md
一般情況下我們的項目工程中一個require屬性就可以了,這裡這個composer.json文档爲了便於區分暫且稱之爲A.json。當我們下載了其他第三方庫時可發現其目錄下也有個composer.json(稱之爲B.json)或composer.lock。
B.json以monolog/monolog爲例composer.json文档配置如下:
{ "name": "monolog/monolog", "description": "Logging for PHP 5.3", "keywords": ["log","logging"], "homepage": "http://github.com/Seldaek/monolog", "type": "library", "license": "MIT", "authors": [ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be" } ], "require": { "php": ">=5.3.0" }, "autoload": { "psr-0": {"Monolog": "src/"} }}
這兩個json文档肯定是不同的,在我們執行操作的時候都是用的A.json。B.json 屬於第三方庫本身的配置文档,和項目的配置依賴沒有關係,B.json在我們要制作自己的庫文档然後發布供別人下載使用時是必須的,通過它別人才能找到我們發布的庫,這裡暫且不談。只需要記住只有根目錄下的composer.json才是真正的項目依賴配置文档。
關於鏡像
Composer在安裝或更新的時候可能會出現失敗或無法訪問的情況,這是由於訪問的外部網路可能被牆了。所以爲Composer配置了一個國内提供的鏡像,終耑中執行:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
以後每次的下載或更新都是訪問的國内服務器了,具體Packagist/Composer鏡像參看phpcomposer