Composer 中配置 PSR-4 自动加载需在 composer.json 的 "autoload"."psr-4" 中正确映射命名空间前缀(如 "App\\")与目录路径(如 "src/"),确保命名空间、目录结构、文件名严格匹配,并执行 composer dump-autoload 生效。

在 Composer 中配置 PSR-4 自动加载,核心是正确设置 "autoload" 字段下的 "psr-4" 映射,把命名空间前缀与实际目录路径对应起来。只要结构合规、配置无误,composer dump-autoload 或安装依赖时会自动生成加载逻辑。
明确命名空间与目录的映射关系
PSR-4 要求命名空间前缀(如 "App\\")必须以双反斜杠结尾,对应一个物理目录(如 "src/")。该目录下子目录结构应与命名空间剩余部分严格一致。例如:
-
App\Controller\HomeController→src/Controller/HomeController.php -
App\Models\User→src/Models/User.php -
App\\不能映射到"src"(缺斜杠)或"src/"(推荐带尾部斜杠,更清晰)
composer.json 中的标准配置写法
以下是一个典型且可直接使用的 composer.json 片段:
{
"autoload": {
"psr-4": {
"App\\": "src/",
"Tests\\": "tests/"
}
}
}
注意:所有命名空间末尾的双反斜杠 \\ 不可省略,否则 Composer 无法识别为 PSR-4 规则;路径建议用正斜杠并以 / 结尾,兼容性更好。
执行自动加载生成
保存 composer.json 后,运行命令使配置生效:
-
composer dump-autoload—— 仅重新生成自动加载文件(推荐开发中使用) -
composer install或composer update—— 安装依赖时也会自动触发
成功后,Composer 会在 vendor/autoload.php 中注册 PSR-4 加载器,你只需在代码开头 require 'vendor/autoload.php'; 即可直接使用类,无需手动 include。
常见问题提醒
如果类找不到,请检查:
- PHP 文件中
namespace声明是否与composer.json中前缀完全匹配(包括大小写) - 类文件名是否符合 PascalCase,且与类名一致(如
HomeController.php内必须是class HomeController) - 是否漏掉
dump-autoload,或修改后没刷新自动加载映射 - 路径是否拼写错误,比如写成
"src"(无斜杠)或"./src/"(不必要加点)
基本上就这些。配对准确、路径规范、及时生成,PSR-4 就能稳稳工作。










