跳至內容

Composer

出自轻之舟百科
Composer
中文名Composer
英文名Composer
開發者Nils Adermann、Jordi Boggiano[1]
首次發布2012年3月1日[1][2]
當前版本2.10.1(2026年6月4日)[1]
編程語言PHP[1]
類型軟件包管理系統、依賴管理工具[1]
許可協議MIT許可證[1]
網站getcomposer.org
源代碼庫GitHub

Composer 是 PHP 編程語言的一個應用程序級依賴管理器,它提供了一種用於管理 PHP 軟件及其所需庫之間依賴關係的標準格式[3][2]。Composer 由 Nils Adermann 和 Jordi Boggiano 開發,於 2012 年 3 月 1 日首次發布[1][2]。它並非像 Yum 或 Apt 那樣的系統級包管理器,而是在單個項目的基礎上管理依賴,通常將依賴安裝到項目目錄下的 `vendor` 文件夾中[4]。Composer 的設計受到了 Node.js 的 npm 和 Ruby 的 Bundler 的強烈啟發[1][2]。

Composer 由 Nils Adermann 和 Jordi Boggiano 於 2011 年 4 月開始開發,並於 2012 年 3 月 1 日首次發布第一個版本[1][2]。其誕生受到了 Node.js 的 npm 以及 Ruby 的 Bundler 的啟發[1][2]。該項目的依賴關係解析算法最初源於 openSUSE 的 libzypp SAT 求解器的一個 PHP 移植版本[2][5]。Composer 的出現極大地改變了 PHP 開發者共享和管理代碼的方式[6]。

Composer 2.x 版本於 2020 年 10 月發布,帶來了顯著的性能提升,尤其是在依賴解析方面。官方鼓勵用戶從 1.x 版本升級至 2.x 版本[7]。Composer 2.2 是長期支持(LTS)版本,支持 PHP 5.3.2 及更高版本,而更新的版本則要求 PHP 7.2.5 或更高版本[4][7]。

核心概念

[編輯 | 編輯原始碼]

Composer 的核心是一個依賴管理工具。開發者通過在當前項目的根目錄下創建一個 `composer.json` 文件,來聲明項目所依賴的外部庫及其版本約束[4][8]。Composer 隨後會解析這些聲明,計算出需要安裝的精確版本,並將其下載到項目目錄下的 `vendor` 文件夾中[4]。

依賴解析

[編輯 | 編輯原始碼]

Composer 的依賴解析過程涉及構建一個完整的依賴關係圖。它會遞歸地分析 `composer.json` 文件中指定的每個依賴項及其自身的依賴,直到所有依賴關係都被解析[9]。Composer 利用 SAT(布爾可滿足性問題)求解器來解決複雜的版本衝突問題,確保安裝的軟件包集合能夠滿足所有依賴約束[2]。

自動加載

[編輯 | 編輯原始碼]

Composer 不僅管理依賴的下載和安裝,還提供了自動加載(autoload)功能。通過 Composer 生成的 `vendor/autoload.php` 文件,開發者可以輕鬆地自動加載所有已安裝的第三方庫,無需手動編寫繁瑣的 `require` 或 `include` 語句[8][2]。

生態系統

[編輯 | 編輯原始碼]

Packagist

[編輯 | 編輯原始碼]

[Packagist](https://packagist.org) 是 Composer 的默認主要軟件包倉庫[2][8]。開發者可以在這裡發布自己的 PHP 包,供其他開發者通過 Composer 安裝和使用[2]。

主要框架與庫的支持

[編輯 | 編輯原始碼]

Composer 已成為現代 PHP 生態的基石,幾乎所有主流 PHP 框架和庫都通過 Composer 進行分發和管理[10]。這些框架包括但不限於 Symfony、Laravel、CodeIgniter、CakePHP、Drupal、TYPO3 和 Yii 等[2]。許多流行的 PHP 庫,如 Guzzle(HTTP 客戶端)、Carbon(日期處理)和 PHPUnit(測試框架),也通過 Composer 分發[11]。

版本歷史

[編輯 | 編輯原始碼]

Composer 的主要版本發布歷史如下:

  • **Composer 1.x**:初始穩定版本系列,於 2012 年發布,奠定了 PHP 依賴管理的基礎。目前已基本終止支持(EOL)[7]。
  • **Composer 2.0**:於 2020 年 10 月發布,帶來了性能的大幅提升和新的依賴解析算法。
  • **Composer 2.2 (LTS)**:長期支持版本,支持 PHP 5.3.2 及以上版本[4]。
  • **Composer 2.3+**:要求 PHP 7.2.5 或更高版本[4][7]。
  • **Composer 2.10.1**:截至 2026 年 6 月的當前穩定版本[1]。

參考文獻

[編輯 | 編輯原始碼]