
要让 Composer 正确实现 PSR-4 自动加载,关键在于合理配置 composer.json 文件中的 autoload 字段,并确保目录结构与命名空间匹配。下面一步步说明如何实践。
1. 理解 PSR-4 命名空间映射规则
PSR-4 是 PHP 的一个自动加载标准,它将命名空间前缀映射到指定的文件目录。类文件的路径由命名空间和类名共同决定,且文件名必须与类名一致。
- 命名空间前缀如
App\对应源码目录如src/ - 类
App\Controller\Home应存放在src/Controller/Home.php - 文件中必须使用正确的
namespace声明
2. 配置 composer.json 的 autoload
在项目根目录的 composer.json 中添加 autoload 配置项,定义 PSR-4 映射关系。
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
上述配置表示:所有以 App\ 开头的类,都从 src/ 目录开始查找。反斜线需双写以避免 JSON 解析问题。
3. 创建符合规范的目录结构与类文件
假设项目结构如下:
project/ ├── src/ │ └── Controller/ │ └── Home.php ├── vendor/ ├── composer.json └── index.php
src/Controller/Home.php 内容应为:
4. 生成自动加载文件
运行以下命令生成自动加载映射:
composer dump-autoload执行后,Composer 会在 vendor/composer/autoload_psr4.php 中生成映射数组,将 App\ 指向 src/ 路径。
5. 在入口文件中引入自动加载
在 index.php 中引入 Composer 的自动加载机制:
sayHello();
运行 php index.php,输出结果为:Hello from Home controller!,表示自动加载成功。
基本上就这些。只要命名空间、目录结构和配置对应,Composer 的 PSR-4 自动加载就能无缝工作。不复杂但容易忽略细节。










