PSR-4 是 Composer 唯一默认支持的自动加载标准,配置需严格遵循反斜杠结尾键与正斜杠结尾值、修改后必须执行 composer dump-autoload、vendor/autoload.php 必须被正确引入且不可覆盖。

PSR-4 是 Composer 唯一默认支持的自动加载标准,不是“可选方案”,而是当前 PHP 项目类加载的事实基础。配错或漏执行关键步骤,Class not found 错误几乎必然出现,且不会报出具体哪步错了。
composer.json 中 psr-4 的键值对必须严格带反斜杠和正斜杠
PSR-4 映射不是字符串前缀匹配,而是命名空间前缀的**字面量截断+路径拼接**。Composer 会把 App 这个键里的反斜杠当作分隔符终点,把 src/ 这个值里的正斜杠当作目录起点,然后把类名剩余部分(如 ControllerUserController)逐级转成子目录结构。
-
"App": "src/"✅ 正确:反斜杠结尾、正斜杠结尾 -
"App": "src/"❌ 类AppControllerUserController会被当成AppController/UserController.php -
"App": "src"❌ 路径不以/结尾,拼接后变成srcController/UserController.php -
"App\": "src/"❌ 双反斜杠在 JSON 中是非法转义,PHP 解析会失败
psr-4 配置修改后必须运行 composer dump-autoload
Composer 不会在运行时动态读取 composer.json;它只在 dump-autoload 时生成 vendor/composer/autoload_psr4.php 这个静态映射数组。没执行这步,改了十遍配置也完全无效。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 开发中改了
composer.json→ 必须立刻composer dump-autoload - 生产部署时推荐加
--optimize-autoloader,生成classmap提升性能 - 如果用了
--classmap-authoritative,Composer 将**完全忽略 PSR-4 动态查找逻辑**,只查 classmap —— 此时新增类必须重新 dump
vendor/autoload.php 必须被 require 且不能被覆盖
vendor/autoload.php 是 Composer 自动加载的唯一入口,它内部注册了 ComposerAutoloadClassLoader 实例,该实例负责 PSR-4 路径拼接、文件存在性预检和缓存。
- 确保项目启动文件(如
public/index.php)顶部有require __DIR__.'/../vendor/autoload.php'; - 不要手动写另一个
spl_autoload_register()放在它前面,否则可能拦截掉 PSR-4 加载流程 - 不要用
require_once 'src/Controller/UserController.php'硬引入 —— 这绕过了命名空间语义,也破坏了依赖可移植性 - 检查是否意外引入了其他 autoloader(比如旧框架遗留的
autoload.php),它们可能提前注册并终止后续加载器
最容易被忽略的是大小写敏感性和文件系统权限:Windows 开发机上不报错的 usercontroller.php,部署到 Linux 服务器就会 Class not found;而 src/ 目录若无读取权限,Composer 的文件存在性预检会静默跳过,导致类永远加载不到。










