#1.簡介
Composer 是PHP 的依賴管理工具。它允許你申明專案所依賴的程式碼庫,它會在你的專案中為你安裝他們。
2.系統需求
執行 Composer 需要 PHP 5.3.2 以上版本。
Composer 是多平台的,它可以同時在 Windows 、 Linux 以及 OSX 平台上運作。
3.安裝(ubuntu)
curl -sS https://getcomposer.org/installer | php mv composer.phar mv composer.phar /usr/local/bin/composer
註:如果沒有安裝curl,可以透過以下指令安裝
apt-get update apt-get install curl
當你的Composer 安裝完畢之後,你可以實用下列命令查看是否安裝成功
composer -v
注意如果上述方法由於某些原因失敗了,你也可以透過php 下載安裝器:
php -r "readfile('https://getcomposer.org/installer');" | php
這將檢查一些PHP 的設置,然後下載composer.phar
到你的工作目錄。這是 Composer 的二進位。這是一個 PHAR 套件(PHP 的歸檔),這是 PHP 的歸檔格式可以幫助使用者在命令列中執行一些操作。
你可以透過--install-dir
選項指定Composer 的安裝目錄(它可以是一個絕對或相對路徑)
4.使用
要開始在你的專案中使用Composer,你只需要一個composer.json
檔案。該文件包含了項目的依賴和其它的一些元資料。
首先建立一個composer.json
文件,寫入對應的套件名稱和版本號,如
{ "require": { "monolog/monolog": "1.13.*" } }
這是後就寫入了一個依賴包,之後安裝依賴包。取得定義的依賴到你的本機項目,之後在你的專案目錄中(即 composer.json
所在目錄)使用 Composer 執行 install
指令。
composer install
當然,如果是在 Windows
系統中,也可以透過呼叫 composer.phar
套件來進行依賴套件的安裝。
php composer.phar install
執行composer install
,就進入自動安裝,安裝完成後會產生一個composer.lock
文件,裡面是特定的版本號名,需要這個文件和composer.json
一起提交到版本管理裡去。
最後,在需要更新依賴套件的時候,可以使用以下命令
composer update
如果只想更新部分依賴
composer update monolog/monolog
5.自動載入
對於庫的自動載入信息,Composer 產生了一個vendor/autoload.php
檔案。你可以在你專案的入口文件中引入它
<?php require __DIR__ . '/vendor/autoload.php'; ?>
這使得你可以輕鬆的使用第三方程式碼。例如:如果你的專案依賴 monolog,你就可以像這樣開始使用這個類別庫,並且他們將被自動載入。
<?php require __DIR__ . '/vendor/autoload.php'; $log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo'); ?>
6.Packagist / Composer 中國全量鏡像
#由於牆的問題,所以會導致Composer 的國外鏡像經常無法正常的install
,所以推薦使用國內的鏡像,使用方式如下
有兩種方式啟用本映像服務:
- 系統全域設定: 即將設定資訊新增至Composer 的全域設定檔config.json 中。詳見」方法一「
- 將設定資訊加入到某個專案的 composer.json 檔案中。詳見」方法二「
方法一: 修改composer 的全域設定檔
開啟命令列視窗(windows使用者)或控制台(Linux、Mac 使用者)並執行下列指令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
方法二: 修改目前專案的composer.json
設定檔:
開啟命令列視窗(windows使用者)或控制台(Linux、Mac 使用者),進入你的專案的根目錄(也就是composer.json
檔案所在目錄),執行以下指令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述指令將會在目前專案中的composer.json
檔案的末端自動加入映像的設定資訊(你也可以自己手動新增):
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
7.使用Composer 中的autoload 實作自動載入命名空間
Composer 除了可以幫你安裝所需的依賴套件以外,還可以實現自動載入命名空間的功能,當我們自己編寫的函數庫與類別庫需要自動載入時,我們就可以透過composer.json
來實現。它類似php 中的 spl_autoload_register()
,其實如果你去查看Composer 中的原始碼,你會看到它的自動載入功能也是用了 spl_autoload_register()
這個函數。 《具體可看此文章詳細介紹》
我們在 composer.json
裡加入以下程式碼:
{ "autoload": { "psr-4": { "Test\\": "test/", "Testtwo\\": "testtwo/" } } }
这个配置文件中有一个 autoload 段,其中有个 《PSR-4》,psr-4 是一个基于 psr-4 规则的类库自动加载对应关系,只要在其后的对象中,以 ”命名空间“: “路径” 的方式写入自己的类库信息修改完成后,之后,在执行下列命令,即可完成自动加载。
composer dumpautoload
注:"psr-4": {"Test\\": "test/"}
中的 "test/" 路径为相对于composer.json
的路径
这个时候,你就可以调用你自己编写的函数库或者类库了
<?php require __DIR__ . '/vendor/autoload.php'; $testClass = new \Test\Testclass(); ?>
注:本文内容参考了《Composer 中文网》,后续还会更新 Composer 其它的实用功能