Composer:修订间差异
TeodoroSeccombe(留言 | 贡献) 小 创建页面,内容为“。” |
IdleTap-bot(留言 | 贡献) 由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行) |
||
| 第1行: | 第1行: | ||
{{Infobox | |||
| title = Composer | |||
| label1 = 中文名 | |||
| data1 = Composer | |||
| label2 = 英文名 | |||
| data2 = Composer | |||
| label3 = 开发者 | |||
| data3 = Nils Adermann、Jordi Boggiano<ref name="wiki-zh">[https://zh.wikipedia.org/wiki/Composer_(%E8%BB%9F%E9%AB%94) Composer (软件) - 维基百科]</ref> | |||
| label4 = 首次发布 | |||
| data4 = 2012年3月1日<ref name="wiki-zh" /><ref name="wiki-en">[https://en.wikipedia.org/wiki/Composer_(software) Composer (software) - Wikipedia]</ref> | |||
| label5 = 当前版本 | |||
| data5 = 2.10.1(2026年6月4日)<ref name="wiki-zh" /> | |||
| label6 = 编程语言 | |||
| data6 = PHP<ref name="wiki-zh" /> | |||
| label7 = 类型 | |||
| data7 = 软件包管理系统、依赖管理工具<ref name="wiki-zh" /> | |||
| label8 = 许可协议 | |||
| data8 = MIT许可证<ref name="wiki-zh" /> | |||
| label9 = 网站 | |||
| data9 = [https://getcomposer.org getcomposer.org] | |||
| label10 = 源代码库 | |||
| data10 = [https://github.com/composer/composer GitHub] | |||
}}'''Composer''' 是 [[PHP]] [[编程]]语言的一个应用程序级依赖管理器,它提供了一种用于管理 PHP [[软件]]及其所需库之间依赖关系的标准格式<ref name="[[wiki]]-zh" /><ref name="wiki-en" />。Composer 由 Nils Adermann 和 Jordi Boggiano 开发,于 2012 年 3 月 1 日首次发布<ref name="wiki-zh" /><ref name="wiki-en" />。它并非像 Yum 或 Apt 那样的系统级包管理器,而是在单个项目的基础上管理依赖,通常将依赖安装到项目目录下的 `vendor` 文件夹中<ref name="intro">[https://getcomposer.org/doc/00-intro.md Introduction - Composer]</ref>。Composer 的设计受到了 Node.[[js]] 的 npm 和 Ruby 的 Bundler 的强烈启发<ref name="wiki-zh" /><ref name="wiki-en" />。 | |||
== 历史 == | |||
Composer 由 Nils Adermann 和 Jordi Boggiano 于 2011 年 4 月开始开发,并于 2012 年 3 月 1 日首次发布第一个版本<ref name="wiki-zh" /><ref name="wiki-en" />。其诞生受到了 [[Node.js]] 的 npm 以及 Ruby 的 Bundler 的启发<ref name="wiki-zh" /><ref name="wiki-en" />。该项目的依赖关系解析算法最初源于 openSUSE 的 libzypp SAT 求解器的一个 PHP 移植版本<ref name="wiki-en" /><ref name="dbpedia">[https://dbpedia.org/page/Composer_(software) About: Composer (software) - DBpedia]</ref>。Composer 的出现极大地改变了 PHP 开发者共享和管理代码的方式<ref name="github">[https://github.com/Compile-N-Run/Compile-N-Run/blob/main/docs/language/php/17-php-best-practices/4-php-dependency-management.mdx Compile-N-Run/docs/language/php/... - GitHub]</ref>。 | |||
Composer 2.x 版本于 2020 年 10 月发布,带来了显著的性能提升,尤其是在依赖解析方面。官方鼓励[[用户]]从 1.x 版本升级至 2.x 版本<ref name="eol">[https://github.com/endoflife-date/endoflife.date/blob/main/products/composer.md endoflife.date/products/composer.md - GitHub]</ref>。Composer 2.2 是长期支持(LTS)版本,支持 PHP 5.3.2 及更高版本,而更新的版本则要求 PHP 7.2.5 或更高版本<ref name="intro" /><ref name="eol" />。 | |||
== 设计 == | |||
=== 核心概念 === | |||
Composer 的核心是一个依赖管理工具。开发者通过在当前项目的根目录下创建一个 `composer.json` 文件,来声明项目所依赖的外部库及其版本约束<ref name="intro" /><ref name="php-manual">[https://www.php.net/manual/zh/install.composer.intro.php PHP: Composer 简介 - Manual]</ref>。Composer 随后会解析这些声明,计算出需要安装的精确版本,并将其下载到项目目录下的 `vendor` 文件夹中<ref name="intro" />。 | |||
=== 依赖解析 === | |||
Composer 的依赖解析过程涉及构建一个完整的依赖关系图。它会递归地分析 `composer.json` 文件中指定的每个依赖项及其自身的依赖,直到所有依赖关系都被解析<ref name="yisu">[https://www.yisu.com/answer/669619.html php composer的原理是什么 - 亿速云]</ref>。Composer 利用 SAT(布尔可满足性问题)求解器来解决复杂的版本冲突问题,确保安装的软件包集合能够满足所有依赖约束<ref name="wiki-en" />。 | |||
=== 自动加载 === | |||
Composer 不仅管理依赖的下载和安装,还提供了自动加载(autoload)功能。通过 Composer 生成的 `vendor/autoload.php` 文件,开发者可以轻松地自动加载所有已安装的第三方库,无需手动编写繁琐的 `require` 或 `include` 语句<ref name="php-manual" /><ref name="wiki-en" />。 | |||
== 生态系统 == | |||
=== Packagist === | |||
[Packagist](https://packagist.org) 是 Composer 的默认主要软件包仓库<ref name="wiki-en" /><ref name="php-manual" />。开发者可以在这里发布自己的 PHP 包,供其他开发者通过 Composer 安装和使用<ref name="wiki-en" />。 | |||
=== 主要框架与库的支持 === | |||
Composer 已成为现代 PHP 生态的基石,几乎所有主流 PHP 框架和库都通过 Composer 进行分发和管理<ref name="[[laravel]]">[https://laravel.net.cn/article/648 Composer | Laravel - 为工匠和代理人打造的简洁技术栈]</ref>。这些框架包括但不限于 Symfony、Laravel、CodeIgniter、CakePHP、Drupal、TYPO3 和 Yii 等<ref name="wiki-en" />。许多流行的 PHP 库,如 Guzzle([[HTTP]] 客户端)、Carbon(日期处理)和 PHPUnit(测试框架),也通过 Composer 分发<ref name="laravel" />。 | |||
== 版本历史 == | |||
Composer 的主要版本发布历史如下: | |||
* **Composer 1.x**:初始稳定版本系列,于 2012 年发布,奠定了 PHP 依赖管理的基础。目前已基本终止支持(EOL)<ref name="eol" />。 | |||
* **Composer 2.0**:于 2020 年 10 月发布,带来了性能的大幅提升和新的依赖解析算法。 | |||
* **Composer 2.2 (LTS)**:长期支持版本,支持 PHP 5.3.2 及以上版本<ref name="intro" />。 | |||
* **Composer 2.3+**:要求 PHP 7.2.5 或更高版本<ref name="intro" /><ref name="eol" />。 | |||
* **Composer 2.10.1**:截至 2026 年 6 月的当前稳定版本<ref name="wiki-zh" />。 | |||
== 参考文献 == | |||
<references /> | |||
2026年8月11日 (二) 10:18的最新版本
| 中文名 | 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](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]。
- ↑ 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(参考)提供文本