首页 / PHP 入门教程 / Composer 依赖管理

PHP 入门教程

Composer 依赖管理

本教程共 65 篇 · 第 39 篇 · 更新于 2026-07-24 · 约 5 分钟阅读

PHPPHP8Composer依赖管理自动加载PSR-4包管理

39. Composer 依赖管理

本节目标:学会安装和使用 Composer,理解 composer.json 的结构,掌握自动加载和常用命令。

Composer 是 PHP 的事实标准依赖管理工具。它让你像搭积木一样,把开源社区的优秀代码整合到自己的项目中。

39.1 什么是 Composer

Composer 帮你:

  1. 声明项目依赖哪些第三方库
  2. 自动下载并安装这些库
  3. 自动处理类加载,无需手动 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.jsoncomposer.lock,安装精确版本的依赖到 vendor/ 目录。

添加新依赖

composer require monolog/monolog
composer require vlucas/phpdotenv:^5.0

执行后 Composer 会自动:

  1. 下载包到 vendor/
  2. 更新 composer.json
  3. 生成/更新 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 更新自动加载映射。

Tip

PSR-4 自动加载要求:命名空间前缀 App\ 对应目录 src/,类 App\Controller\UserController 对应文件 src/Controller/UserController.php

39.6 常用命令速查

命令作用
composer installcomposer.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.jsoncomposer.lock。部署时在生产环境运行 composer install


来源:参考了 GitHub「php-the-right-way」Composer 章节、runoob 相关教程等,改写后所得。