在 composer.json 中配置 PSR-4 自动加载需在 "autoload" 下设置 "psr-4",命名空间末尾必须加双反斜杠(如 "App\\"),映射到相对于项目根目录的源码路径(如 "src/"),Composer 会自动将 \ 替换为目录分隔符;配置后须运行 composer dump-autoload(推荐加 -o 参数优化),支持多命名空间映射,路径末尾建议带斜杠,且不可将 vendor/ 等第三方目录纳入自定义 autoload。

在 composer.json 中配置 PSR-4 自动加载,核心是正确设置 "autoload" 下的 "psr-4" 键,将命名空间前缀映射到对应的源码目录。
基本写法:命名空间 + 目录路径
PSR-4 要求命名空间前缀以反斜杠结尾(如 "App\\"),对应的实际目录路径是相对于项目根目录的相对路径(通常不含 src/ 前缀,但需与实际结构一致)。
- 命名空间末尾必须加双反斜杠:
"App\\",不是"App\"或"App" - 目录路径可以是
"src/"、"app/"或任何你实际存放类文件的子目录 - Composer 会自动把命名空间中的
\替换为目录分隔符,并拼接到指定路径后查找文件
常见配置示例
假设你的类文件放在 src/ 目录下,且主命名空间是 App\:
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
此时 App\Controller\HomeController 对应的文件路径就是 src/Controller/HomeController.php。
支持多个命名空间映射:
"autoload": {
"psr-4": {
"App\\": "src/",
"Tests\\": "tests/"
}
}
配置后别忘了更新 autoload
修改完 composer.json 后,必须运行以下命令生成或刷新自动加载映射:
composer dump-autoload
开发中建议加上 -o 参数优化性能(生成 classmap 加速查找):
composer dump-autoload -o
如果用了 composer install 或 composer update,也会自动触发 autoload 重建。
注意事项
PSR-4 不要求目录名和命名空间完全一致,只要路径能按规则推导出即可。例如:
-
"MyLib\\": "library/src/"是合法的 - 路径末尾推荐带斜杠(
"src/"),避免意外拼接错误 - 不要把
vendor/或其他第三方目录放进自己的 autoload —— Composer 已自动处理它们
基本上就这些。配对准确、路径存在、执行 dump 就能用上 PSR-4 自动加载了。










