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);或执行了但没检查是否在正确项目根目录。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 验证是否生效:在代码里跑
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

















