Composer
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 |
|---|---|
| 英文名 | 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 由 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 的主要版本发布历史如下:
参考文献
编辑- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 Composer (软件) - 维基百科
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 Composer (software) - Wikipedia
- ↑ 引用错误:
<ref>标签无效;未给name(名称)为wiki-zh的ref(参考)提供文本 - ↑ 4.0 4.1 4.2 4.3 4.4 4.5 Introduction - Composer
- ↑ About: Composer (software) - DBpedia
- ↑ Compile-N-Run/docs/language/php/... - GitHub
- ↑ 7.0 7.1 7.2 7.3 endoflife.date/products/composer.md - GitHub
- ↑ 8.0 8.1 8.2 PHP: Composer 简介 - Manual
- ↑ php composer的原理是什么 - 亿速云
- ↑ Composer | Laravel - 为工匠和代理人打造的简洁技术栈
- ↑ 引用错误:
<ref>标签无效;未给name(名称)为laravel的ref(参考)提供文本