Composer 是 PHP 的依赖管理工具(类似于 Node.js 的 npm、Python 的 pip),用于管理 PHP 项目的第三方库(包)及其依赖关系。以下是核心概念和使用指南:
核心功能
- 依赖管理
- 通过
composer.json
声明项目依赖的包(如"monolog/monolog": "^2.0"
)。 - 自动解析并安装所有依赖(包括嵌套依赖)。
- 自动加载
- 生成
vendor/autoload.php
文件,实现类自动加载(支持 PSR-4 标准)。
- 版本控制
- 使用语义化版本约束(如
^7.4
、~3.1.0
)精确控制包版本。
- 环境隔离
- 依赖安装在项目内的
vendor
目录,避免全局污染。
基础命令
命令 | 作用 |
| 交互式创建 |
| 安装 |
| 安装新包并自动更新 |
| 更新所有包到最新兼容版本 |
| 移除包 |
| 重新生成自动加载器 |
关键文件
composer.json
- 项目配置:定义项目名称、依赖、自动加载规则等。
{
"name": "your-project",
"require": {
"php": "^8.0",
"guzzlehttp/guzzle": "^7.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
composer.lock
- 锁定依赖版本:确保团队部署时使用完全一致的包版本(需提交到版本控制)。
工作流程
- 初始化项目
composer init
- 安装包(如 Guzzle HTTP 客户端)
composer require guzzlehttp/guzzle
- 引入自动加载器
require __DIR__ . '/vendor/autoload.php';
- 使用包中的类
use GuzzleHttp\Client;
$client = new Client();
版本约束语法
约束 | 示例 | 说明 |
精确版本 |
| 仅安装指定版本 |
通配符 |
| 匹配 |
波浪符 |
|
|
插入符 |
|
|
加速安装(中国用户)
使用国内镜像(如阿里云):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
常见场景
- 全局安装工具(如 PHPUnit):
composer global require phpunit/phpunit
- 创建项目模板(如 Laravel):
composer create-project laravel/laravel my-project
- 更新指定包:
composer update vendor/package
最佳实践
- 将
composer.lock
提交到版本控制(确保一致性)。 - 生产环境使用
composer install --no-dev
跳过开发依赖。 - 使用
composer validate
检查composer.json
格式。
Composer 极大简化了 PHP 项目的依赖管理,是现代 PHP 开发的必备工具。