PSR-4通过命名空间映射目录结构实现自动加载,如"App\": "src/"配置下,App\User类对应src/User.php文件,需保持命名空间与目录一致并运行composer dump-autoload更新加载器。

PSR-4 是 Composer 中用于自动加载 PHP 类文件的核心规范之一,它的作用是将命名空间映射到目录结构,让 PHP 能在需要时自动找到并加载对应的类文件。
PSR-4 的基本原理
PSR-4 定义了类名与文件路径之间的映射关系。你只需要按照命名空间和目录结构组织代码,Composer 就能根据配置自动加载类,无需手动 include 或 require 文件。
核心规则包括:
- 类的全限定命名空间对应项目中的某个根命名空间前缀
- 命名空间的子层级对应文件目录层级
- 类名对应文件名,且文件扩展名为 .php
- 文件路径由命名空间中除去根前缀后的部分决定
composer.json 中的配置示例
在 composer.json 中通过 autoload 字段定义 PSR-4 映射:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
这个配置表示:所有以 App\ 开头的命名空间类,都放在 src/ 目录下查找。
例如:
- 类 App\User 对应文件 src/User.php
- 类 App\Service\OrderService 对应文件 src/Service/OrderService.php
实际使用注意事项
要让 PSR-4 正常工作,必须遵守几个关键点:
- 命名空间末尾的反斜杠不是必须的(但推荐加上以便清晰)
- 目录和命名空间名称大小写需保持一致(建议全部小写目录,命名空间驼峰或标准大写)
- 修改 composer.json 后必须运行 composer dump-autoload 更新自动加载器
- PSR-4 不支持全局函数或常量的自动加载,只针对类、接口和 trait
基本上就这些。只要目录结构和命名空间匹配,Composer 就能准确找到类文件,实现无缝自动加载。不复杂但容易忽略细节。









