Composer
Composer 是 PHP 編程語言的一個應用程式級依賴管理器,它提供了一種用於管理 PHP 軟件及其所需庫之間依賴關係的標準格式[1][2]。Composer 由 Nils Adermann 和 Jordi Boggiano 開發,於 2012 年 3 月 1 日首次發布[1][2]。它並非像 Yum 或 Apt 那樣的系統級包管理器,而是在單個項目的基礎上管理依賴,通常將依賴安裝到項目目錄下的 `vendor` 文件夾中[3]。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][4]。Composer 的出現極大地改變了 PHP 開發者共享和管理代碼的方式[5]。
Composer 2.x 版本於 2020 年 10 月發布,帶來了顯著的性能提升,尤其是在依賴解析方面。官方鼓勵用戶從 1.x 版本升級至 2.x 版本[6]。Composer 2.2 是長期支持(LTS)版本,支持 PHP 5.3.2 及更高版本,而更新的版本則要求 PHP 7.2.5 或更高版本[3][6]。
設計
核心概念
Composer 的核心是一個依賴管理工具。開發者通過在當前項目的根目錄下創建一個 `composer.json` 文件,來聲明項目所依賴的外部庫及其版本約束[3][7]。Composer 隨後會解析這些聲明,計算出需要安裝的精確版本,並將其下載到項目目錄下的 `vendor` 文件夾中[3]。
依賴解析
Composer 的依賴解析過程涉及構建一個完整的依賴關係圖。它會遞歸地分析 `composer.json` 文件中指定的每個依賴項及其自身的依賴,直到所有依賴關係都被解析[8]。Composer 利用 SAT(布爾可滿足性問題)求解器來解決複雜的版本衝突問題,確保安裝的軟件包集合能夠滿足所有依賴約束[2]。
自動加載
Composer 不僅管理依賴的下載和安裝,還提供了自動加載(autoload)功能。通過 Composer 生成的 `vendor/autoload.php` 文件,開發者可以輕鬆地自動加載所有已安裝的第三方庫,無需手動編寫繁瑣的 `require` 或 `include` 語句[7][2]。
生態系統
Packagist
[Packagist](https://packagist.org) 是 Composer 的默認主要軟件包倉庫[2][7]。開發者可以在這裏發布自己的 PHP 包,供其他開發者通過 Composer 安裝和使用[2]。
主要框架與庫的支持
Composer 已成為現代 PHP 生態的基石,幾乎所有主流 PHP 框架和庫都通過 Composer 進行分發和管理[9]。這些框架包括但不限於 Symfony、Laravel、CodeIgniter、CakePHP、Drupal、TYPO3 和 Yii 等[2]。許多流行的 PHP 庫,如 Guzzle(HTTP 客戶端)、Carbon(日期處理)和 PHPUnit(測試框架),也通過 Composer 分發[9]。
版本歷史
Composer 的主要版本發布歷史如下:
參考文獻
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 引用錯誤:無效的
<ref>標籤,未定義名稱為wiki-zh的參考文獻內容文字。 - ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 引用錯誤:無效的
<ref>標籤,未定義名稱為wiki-en的參考文獻內容文字。 - ↑ 3.0 3.1 3.2 3.3 3.4 3.5 Introduction - Composer
- ↑ About: Composer (software) - DBpedia
- ↑ Compile-N-Run/docs/language/php/... - GitHub
- ↑ 6.0 6.1 6.2 6.3 endoflife.date/products/composer.md - GitHub
- ↑ 7.0 7.1 7.2 PHP: Composer 簡介 - Manual
- ↑ php composer的原理是什麼 - 億速雲
- ↑ 9.0 9.1 Composer | Laravel - 為工匠和代理人打造的簡潔技術棧