【PHP Composer】安裝&使用

徐俊發表於2017-05-28

【工具簡介】:Composer 是 PHP 用來管理依賴(dependency)關係的工具。你可以在自己的專案中宣告所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫檔案。

【中文官網】:http://www.phpcomposer.com/

【英文官網】:https://getcomposer.org/

【官方安裝教程(Packagist)】:https://pkg.phpcomposer.com/

【其它參考】:http://blog.csdn.net/qq_29078067/article/details/51246073

【官方文件】:http://docs.phpcomposer.com/

【後備方案】:如果實在安裝不成功,可以去官網下載安裝包進行安裝
安裝教程
【擴充套件】:php_openssl.dll 必須開啟

【版本】:PHP>5.3.2

【環境變數】:事先配置好 PHP 環境變數

【安裝】:使用 Windows 命令視窗依次執行

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

【型別】【區域性安裝】:直至上述步驟為止結束為區域性安裝,既安裝於當前的資料夾內

【型別】【全域性安裝】:複製 composer.phar 至 PHP 安裝目錄,並在此目錄下建立一個 Composer.bat 複製下面程式碼至此檔案中

[@php](https://learnku.com/users/10050) "%~dp0composer.phar" %*

【測試結果】【區域性安裝】:切換至安裝目錄,既 composer.phar 所在目錄,然後執行

php composer.phar composer --version

【測試結果】【全域性安裝】:

composer --version

【測試成功的結果輸出】:

You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Composer version 1.4.1 2017-03-10 09:29:45

【可能出現的錯誤】:若提示 SSL 安裝失敗的資訊,是由於沒有安裝CA證照所導致,前往連結下載證照 ( https://curl.haxx.se/docs/caextract.html ) ,然後配置 php.ini

【SSL錯誤參考文件】:https://my.oschina.net/yearnfar/blog/346727

# @ php.ini 檔案中配置 CA 證照路徑
openssl.cafile=D:/wamp/bin/php/cacert-2017-01-18.pem

中國全量映象
【映象意義】【摘錄】:一般情況下,安裝包的資料(主要是 zip 檔案)一般是從 github.com 上下載的,安裝包的後設資料是從 packagist.org 上下載的。然而,由於眾所周知的原因,國外的網站連線速度很慢,並且隨時可能被“牆”甚至“不存在”。所以經常會導致無法安裝或者更新元件包

【映象原理】【摘錄】:Packagist 中國全量映象”所做的就是快取所有安裝包和後設資料到國內的機房並通過國內的 CDN 進行加速,這樣就不必再去向國外的網站發起請求,從而達到加速 composer install 以及 composer update 的過程,並且更加快速、穩定。因此,即使 packagist.org、github.com 發生故障(主要是連線速度太慢和被牆),你仍然可以下載、更新安裝包。

【全域性安裝】:開啟命令列視窗(windows使用者)或控制檯(Linux、Mac 使用者)並執行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

【區域性安裝】【命令】:開啟命令列視窗(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"
    }
}

【執行安裝】:

# @ 在命令視窗執行下載 PS:如果使用的是區域性安裝,記得切換至安裝目錄
composer install

安裝依賴 & 自動載入
【演示需求】:目前作者正好需要一個元件來完成剛收到的需求:讀取 Excel,前往 Packagist 搜尋關鍵詞 "excel" 尋找合適的元件

【配置下載器】: 選擇好合適的元件後我們需要將元件的資訊寫入 composer.json ( 注意:這個檔案預設是沒有的,需要自己建立 )

# @ 填寫剛才所記錄的 "廠商名/包名" & "版本號" PS:第二條記錄是上文所配置的 "中國全量映象"
{
    "require": {
        "phpoffice/phpexcel": "1.8.1"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
}

【使用多元件 】:本人在實際環境中遇到了元件被刪除的情況,其原因是由於 composer.json 配置錯誤導致

# @ 引入多個元件時必須寫在同一個 require 鍵內否則元件將會被覆蓋
{
    "require": {
        "phpoffice/phpexcel": "1.8.1",
        "filp/whoops": "2.1.8"
    }
}

【執行下載】:

# @ 在命令視窗執行下載 PS:如果使用的是區域性安裝,記得切換至安裝目錄
composer install

【更新元件】:若專案資料夾中已存在composer.lock檔案那麼請以此執行如下命令

# @ update 命令會根據 composer.json 更新鎖檔案
composer update
# @ install 命令會檢查鎖檔案是否存在,如果存在將忽略 composer.josn 中的定義 所以需要先執行更新命令
composer install

【自動載入器】:若首次安裝元件,你會發現 Composer 會在元件下載完成後在目錄下建立 vendor 資料夾,其中就包括了 Composer 免費贈送的符合PSR-4標準的自動載入器

<?php
# @ 引入 autoload.php 就可實現自動載入,任何下載的元件都可直接呼叫,無需再次引入
require 'vendor/autoload.php';
?>

【示例程式碼】:最後我們直接使用剛才所下載的 PHPExcel 元件即可

<?php
# @ Composer 自動載入器
require 'vendor/autoload.php';
# @ PHPexcel 函式類呼叫
$inputFileName = 'Client.xls';
echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
echo '<hr />';
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
# @ 輸出結果
var_dump($sheetData);
?>

【輸出結果】:

Loading file Client.xls using IOFactory to identify the format

D:\wamp\www\Excel\index.php:20:array (size=2)
  1 =>
    array (size=8)
      'A' => string '編號' (length=6)
      'B' => string '手機' (length=6)
      'C' => string '姓名' (length=6)
      'D' => string '樓盤編號' (length=12)
      'E' => string '戶型' (length=6)
      'F' => string '樓號' (length=6)
      'G' => string '銷售編號' (length=12)
      'H' => string '樓銷編號' (length=12)
  2 =>
    array (size=8)
      'A' => string '2017-0058' (length=9)
      'B' => string '34' (length=2)
      'C' => string 're' (length=2)
      'D' => string 'LP-0018' (length=7)
      'E' => string '次臥' (length=6)
      'F' => string '34' (length=2)
      'G' => string '2017-0002' (length=9)
      'H' => string '2017-0003' (length=9)

【結束語】:Composer 毫無疑問是現在使用PHP元件的最佳實踐,它為全球的PHP開發者提供了便利並且活躍了社群,尤其對中國開發者而言 "中國全量映象" 更是一個福音,甚至是沙漠中的綠洲,所以我由衷的感謝為這個開源專案做出貢獻的開發者

相關文章