Composer 依赖
composer.json、vendor、PSR-4。
Composer 依赖
这一课你将能做到
- 用 composer init 和 require 管理项目依赖,看懂 composer.json 每个字段
- 分清 install / update / dump-autoload 三个命令的职责,正确对待 composer.lock
- 配置 PSR-4 自动加载,把上一课的命名空间知识接到真实工程上
为什么要学
Composer 之于 PHP,就是 Maven + Gradle 之于 Java:下载依赖、解析版本冲突、生成自动加载器,全靠它。现代 PHP 项目没有「手动下载类文件」这回事——composer require monolog/monolog 一条命令,包及其依赖自动就位,vendor/autoload.php 一行 require,全部类按需加载。国内镜像(阿里云、腾讯云)也已成熟,无需担心网络。
人话:Packagist 是「应用商店」,composer.json 是「购物清单」,composer.lock 是「已安装快照」,vendor 目录是「快递箱」。学会这套流程,你就具备了读任何现代 PHP 项目的前提。
先建立图像
Composer 的三层结构:
packagist.org(中央仓库,存元数据)
▲ require monolog/monolog
composer.json ← 你声明「我要什么」
composer.lock ← 解析后的精确版本快照(每个包的 commit hash)
vendor/ ← 实际代码 + vendor/autoload.php
与 Maven 的对应:composer.json ≈ pom.xml 的 dependencies,composer.lock ≈ 锁定版本后的 effective pom,Packagist ≈ Maven Central,vendor/ ≈ 本地仓库(但直接进项目目录)。
跟着做
步骤 1:安装 Composer 并初始化项目
# Windows:官网下载 Composer-Setup.exe;macOS/Linux 用官方安装脚本或包管理器
composer --version # Composer 2.x
mkdir demo-app && cd demo-app
composer init
按提示填写包名、描述后生成 composer.json。也可以直接手写一个最小版本:
{
"name": "myteam/demo-app",
"description": "PHP 学习项目",
"type": "project",
"require": {
"php": ">=8.2",
"monolog/monolog": "^3.5"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
"php": ">=8.2" 是对运行环境的约束——相当于 Maven 里配置的 JDK 版本门槛。
步骤 2:安装依赖并体验自动加载
composer install
生成 vendor/ 目录与 composer.lock。写入口文件 index.php:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php'; // 整个项目唯一需要的 require
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use App\Utils\Calculator; // 你自己的类,同样自动加载
$log = new Logger('app');
$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::INFO));
$log->info('应用启动', ['user' => 'leebf']);
echo (new Calculator())->add(2, 3), PHP_EOL; // 5