psr-4 正确映射应为 "app\": "src/",末尾双反斜杠不可省略,路径相对于 composer.json;改后须运行 composer dump-autoload 验证 class_exists('app\user') 为 true,且需确保未定义 __autoload 或干扰 composer 自动加载器。

PSR-4 映射路径必须指向命名空间根目录
写成 "App\": "src/App/" 是常见错误,会导致 App\User 去找 src/App/User.php,而实际类文件在 src/User.php。正确写法是 "App\": "src/",这样 App\User 才会拼出 src/User.php。
注意:"App\" 结尾的双反斜杠是必需的(PHP 字符串中表示一个反斜杠),漏掉就变成转义,整个映射静默失效;"src/" 末尾的斜杠不是必须的,但加了也无害,部分 Composer 版本会警告,建议统一用 "src"。
- 路径始终相对于
composer.json所在目录,不是项目根、不是vendor/、也不是当前工作目录 - Windows 下大小写不敏感,Linux 部署后
HomeController.php写成homecontroller.php就直接报错 - 子目录名必须和命名空间段完全一致:命名空间
App\Http\Controllers→ 目录src/Http/Controllers/→ 文件src/Http/Controllers/HomeController.php
改完 composer.json 后必须运行 composer dump-autoload
Composer 不会监听文件变化,composer.json 里改了 autoload 配置,不执行这一步,等于没改。开发阶段用 composer dump-autoload 即可;加 -o 会生成优化版,但新增类后不会自动刷新 classmap,调试时反而容易误判。
常见无效操作:在 src/ 目录下执行该命令(它只认当前目录有无 composer.json);或执行了但没检查是否在正确项目根目录。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 验证是否生效:在代码里跑
var_dump(class_exists('App\User')),返回true才算成功 - 如果返回
false,先确认vendor/autoload.php是否已引入,且是在所有类引用之前 - CI 环境若用了
--no-dev,autoload-dev区块完全不加载,测试类会找不到
别让 __autoload 或 spl_autoload_register 干扰 Composer
手动定义过 function __autoload($class) { },就会覆盖 Composer 的自动加载器,你的 PSR-4 类永远加载不到。Composer 默认已注册自己的加载器,不需要也不应该再干预底层 autoload 流程。
即使用了 spl_autoload_register,也要避免调用 spl_autoload_unregister('__autoload') 或类似清理逻辑——这会把 Composer 的加载器一并干掉。
- 删掉所有全局
__autoload定义 - 如果必须用
spl_autoload_register加载非标准文件,确保不注销已有加载器 - 调试时可用
composer show --platform查看当前平台 autoloader 是否启用
files 和 classmap 用错了地方会报重复定义
"files" 是唯一一种“每次请求都强制 include_once”的方式,适合 helpers.php 这类纯函数/常量文件;但它不能放类定义——一旦这个文件里有 class Helper,又同时用 PSR-4 加载同名类,PHP 就会抛 Fatal error: Cannot declare class Helper。
"classmap" 适合老代码、无命名空间、类名与文件名不一致的情况,但它不会自动感知新增文件,每次增删都要手动 composer dump-autoload。
-
"files": ["src/helpers.php"]—— 路径必须相对于composer.json,不能写成"helpers.php" -
"classmap": ["legacy/"]—— 会递归扫描,但新增类后不重跑命令就加载不到 - 多个
files的加载顺序不可控,有依赖关系时建议合并为单个入口文件,再由它显式 require










