Composer 依赖管理
本教程共 65 篇 · 第 39 篇 · 更新于 2026-07-24 · 约 5 分钟阅读
39. Composer 依赖管理
本节目标:学会安装和使用 Composer,理解
composer.json的结构,掌握自动加载和常用命令。
Composer 是 PHP 的事实标准依赖管理工具。它让你像搭积木一样,把开源社区的优秀代码整合到自己的项目中。
39.1 什么是 Composer
Composer 帮你:
- 声明项目依赖哪些第三方库
- 自动下载并安装这些库
- 自动处理类加载,无需手动
require
类比:Composer 之于 PHP,就像 npm 之于 Node.js,pip 之于 Python。
39.2 安装 Composer
Windows
下载并运行 Composer-Setup.exe,按向导完成安装:
https://getcomposer.org/Composer-Setup.exe
Linux / macOS
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
安装完成后验证:
composer --version
Tip国内用户建议配置阿里云镜像,大幅提升下载速度:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
39.3 初始化项目
在项目目录下运行:
composer init
按提示填写项目信息,最终生成 composer.json:
{
"name": "mycompany/myapp",
"description": "我的第一个 Composer 项目",
"type": "project",
"require": {
"php": ">=8.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
39.4 安装依赖
安装现有项目的依赖
如果项目已有 composer.json,执行:
composer install
这会读取 composer.json 和 composer.lock,安装精确版本的依赖到 vendor/ 目录。
添加新依赖
composer require monolog/monolog
composer require vlucas/phpdotenv:^5.0
执行后 Composer 会自动:
- 下载包到
vendor/ - 更新
composer.json - 生成/更新
composer.lock
Note
composer.lock锁定了每个包的具体版本,团队开发时应提交到版本控制,确保大家用相同的代码。
39.5 自动加载
Composer 最强大的功能是自动加载(命名空间基础见第 18 章)。只需一行代码:
<?php
require 'vendor/autoload.php';
// 现在可以直接使用所有依赖包的类
$log = new Monolog\Logger('name');
配置自己的命名空间
在 composer.json 中配置:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
目录结构:
project/
src/
Controller/
UserController.php
Model/
User.php
vendor/
composer.json
<?php
// src/Controller/UserController.php
namespace App\Controller;
use App\Model\User;
class UserController {
public function index(): void {
$user = new User();
// ...
}
}
修改 composer.json 后,执行 composer dump-autoload 更新自动加载映射。
TipPSR-4 自动加载要求:命名空间前缀
App\对应目录src/,类App\Controller\UserController对应文件src/Controller/UserController.php。
39.6 常用命令速查
| 命令 | 作用 |
|---|---|
composer install | 按 composer.lock 安装依赖 |
composer update | 更新依赖到最新兼容版本 |
composer require 包名 | 添加并安装新依赖 |
composer remove 包名 | 移除依赖 |
composer dump-autoload | 重新生成自动加载文件 |
composer show | 列出已安装的所有包 |
composer validate | 检查 composer.json 格式 |
composer self-update | 更新 Composer 本身 |
39.7 生产环境部署
生产服务器上只执行 composer install,不要执行 composer update:
# 部署时
composer install --no-dev --optimize-autoloader
--no-dev:不安装开发依赖(如测试框架)--optimize-autoloader:将 PSR-4 映射转为 classmap,提升加载性能
Note
vendor/目录通常很大,可以用.gitignore忽略,只提交composer.json和composer.lock。部署时在生产环境运行composer install。
来源:参考了 GitHub「php-the-right-way」Composer 章节、runoob 相关教程等,改写后所得。