psr-4 是 php-fig 制定的自动加载规范,通过命名空间前缀与文件路径的映射实现类的按需加载,解决手动引入混乱、维护难、复用性差问题;其规则要求前缀以反斜杠结尾并映射基目录,类名剩余部分将反斜杠转正斜杠加.php构成相对路径,且文件必须存在、命名严格一致;它不扫描目录或解析内容,仅字符串替换拼路径;相比已废弃的 psr-0,psr-4 仅支持命名空间、规则更简、性能更好、适配现代包管理。

PSR-4 是 PHP-FIG(PHP Framework Interop Group)制定的自动加载规范,核心是建立命名空间前缀与文件系统路径之间的明确映射关系,让类、接口、trait 等结构能按需自动加载,无需手动 require 或 include。
它解决什么问题
早期 PHP 项目靠手写 require 或老旧的 __autoload 加载类,路径混乱、维护困难、跨项目复用性差。PSR-4 提供统一规则,使不同框架和库能互相兼容——只要目录结构和命名空间对得上,就能被正确加载。
关键规则很简单
- 命名空间前缀(如
App\)必须以反斜杠结尾,且严格区分大小写 - 该前缀映射到一个“基目录”(如
src/),路径值以正斜杠结尾 - 类名中前缀之后的部分,把
\全部替换成/,再拼上.php,就得到相对路径 - 例如:
App\Http\Controllers\Home→ 剥离App\后剩Http\Controllers\Home→ 转为Http/Controllers/Home.php→ 最终加载src/Http/Controllers/Home.php - 文件必须真实存在,类名与文件名完全一致(包括大小写),且文件里只定义一个同名类
它不是扫描器,而是字符串替换器
PSR-4 不会遍历目录查找类,也不解析文件内容。它只做一件事:收到类名后,按规则拼出路径,然后检查文件是否存在并加载。所以配置写错、目录少一层、文件名大小写不对,都会直接报 Class not found。
和 PSR-0 的主要区别
PSR-0 已废弃。它支持下划线转目录(如 Foo_Bar → Foo/Bar.php),还要兼容 PHP 5.2;PSR-4 只认命名空间 + 反斜杠,规则更简洁、性能更好,也更适合现代包管理(如 Composer)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











