php生态圈composer是什么
1. Composer 是什么
1.1 定位与本质
Composer 是 PHP 生态里的依赖管理器,解决的核心问题只有一个:
“这个 PHP 项目依赖了哪些库,用什么版本,怎么稳定、可重复地安装?”
但 Composer 的哲学更偏向 “项目级、可复现构建”,这点非常工程化,也非常 DevOps。
Composer = 依赖描述(composer.json) + 版本锁定(composer.lock) + 自动加载(autoload)
2. Composer解决了哪些痛点
2.1 依赖地狱(Dependency Hell)
在 Composer 之前:
- 手动下载第三方库
- 拷贝到
vendor/ - 不同项目、不同版本互相覆盖
- 升级靠“感觉”
Composer 之后:
- 每个项目独立依赖
- 明确版本约束
- 冲突自动检测
- 升级可回滚
2.2 自动加载(Autoload)
Composer 内置 PSR-4 / PSR-0 自动加载规范:
- 不需要
require_once - 类名 ↔ 文件路径自动映射
- 框架级项目(Laravel / Symfony)的基础设施
这一步,本质上是把 PHP 从“脚本语言”推向“工程语言”。
3. Composer 的核心文件
3.1 composer.json(意图声明)
这是“你想要什么”
1 | { |
表达的是:
- 这个项目需要 PHP ≥ 7.4
- 需要 monolog 2.x(允许小版本升级)
生产部署一定要带 lock 文件
4. Composer 的核心命令
4.1 安装依赖
1 | composer install |
- 优先使用
composer.lock - 这是 部署命令,不是开发命令
4.2 添加依赖
1 | composer require guzzlehttp/guzzle |
- 修改 composer.json
- 同时更新 composer.lock
4.3 升级依赖
1 | composer update |
- 会重新计算版本
- 谨慎用于生产环境
4.4 自动加载
1 | require __DIR__ . '/vendor/autoload.php'; |
这一行,是整个现代 PHP 工程的“宇宙起点”。
5. Composer 的生态地位
5.1 Packagist
- Composer 默认仓库
- 全球最大的 PHP 包索引
- 几乎所有主流 PHP 框架和库都在这里
5.2 框架强依赖
- Laravel:完全建立在 Composer 之上
- Symfony:Composer 的“精神原乡”
- ThinkPHP / Hyperf / Slim:无一例外