Composer使用要點

composer原理

composer主要基于spl_autoload_register。
在執行了“composer install”后,composer先將在https://packagist.org/上依賴的包下載到vendor目錄中,然后將所有依賴包的枚舉寫到vendor/composer/autoload_static.php中,再通過spl_autoload_register注冊到SPL __autoload函數棧中即可。

composer.json添加模塊

我們需要在 composer.json 文件中指定 require key 的值,以明確你的項目需要依賴哪些包。

  • composer.json的最小demo
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
  • 示例工程


  • 加入對本工程其他目錄下所有class的依賴
    對ezSQL的依賴,則需要添加如下:
  "name": "marsthink",
  "description": "PHP class to make interacting with a database ridiculusly easy.",
  "license": "LGPL",
  "authors": [
{
      "name": "Jamal Jo",
      "email": "woshizmxin@163.com"
    }
  ],
  "autoload": {
    "classmap": [
      "ezSQL/"
    ]
  }
}

{
  "name": "marsthink",
  "description": "PHP class to make interacting with a database ridiculusly easy.",
  "license": "LGPL",
  "authors": [
    {
      "name": "Jamal Jo",
      "email": "woshizmxin@163.com"
    }
  ],
  "require": {
    "monolog/monolog": "1.0.*",
    "jpush/jpush": "v3.5.*"
  },
  "autoload": {
    "classmap": [
      "ezSQL/"
    ]
  }
}

引用composer.json的庫

根據composer.json,Composer 生成了一個 vendor/autoload.php 文件。你可以簡單的引入這個文件:

require 'vendor/autoload.php';

這使得你可以很容易的使用第三方代碼。例如:如果你的項目依賴 monolog,你就可以像這樣開始使用這個類庫,并且他們將被自動加載。

// index.php
require 'vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

composer.lock - 鎖文件

請提交你應用程序的 composer.lock (包括 composer.json)到你的版本庫中

在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項目的特定版本。install 命令將會檢查鎖文件是否存在,如果存在,它將下載指定的版本(忽略 composer.json 文件中的定義)。如果不存在,Composer 將讀取 composer.json 并創建鎖文件。

這意味著,任何人建立項目都將下載與指定版本完全相同的依賴。你的持續集成服務器、生產環境、你團隊中的其他開發人員、每件事、每個人都使用相同的依賴,從而減輕潛在的錯誤對部署的影響。即使你獨自開發項目,在六個月內重新安裝項目時,你也可以放心的繼續工作,即使從那時起你的依賴已經發布了許多新的版本。

修改鏡像源

運行composer install時,有時候卡在Loading composer repositories with package information,此時需要更換鏡像源頭,方法如下:

  1. 方法一:修改 composer 的全局配置文件(推薦方式)
    打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶)并執行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
  1. 方法二:修改當前項目的 composer.json
    配置文件:
    打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶),進入你的項目的根目錄(也就是 composer.json文件所在目錄),執行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令將會在當前項目中的 composer.json文件的末尾自動添加鏡像的配置信息(你也可以自己手工添加)

注意:

  • 根據經驗,每次部署代碼時,由于工程內的依賴關系變化,建議先刪除composer.lock,再運行composer install。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容