class not found 错误主因是 vendor/autoload.php 未被引入;其次为 composer.json 中 psr-4 配置错误、大小写不匹配、文件权限或路径问题;可改用 classmap 方式强制映射。

Class not found 错误不是自动加载失效,而是 autoload.php 没被引入
绝大多数 Class not found 报错根本没走到 Composer 自动加载逻辑里——vendor/autoload.php 根本没被 require 或 include。检查入口文件(如 index.php、test.php)第一行是否写了:
require __DIR__ . '/vendor/autoload.php';漏掉这句,后面所有自动加载配置都白搭。
composer dump-autoload 不刷新 PSR-4 映射?检查 composer.json 的 namespace 和路径是否匹配
执行 composer dump-autoload 后类仍找不到,大概率是 composer.json 里 psr-4 配置写错了。常见错误包括:
-
"App\": "src/"要求类名以App开头,且文件必须在src/下,比如src/Http/Controller.php对应AppHttpController - 路径末尾多写了
/src或少写了/,例如写成"App\": "src"(缺斜杠)或"App\": "src/App"(多了一层) - 命名空间用了下划线
My_Class却配了 PSR-4——PSR-4 只支持反斜杠分隔,下划线命名需用 PSR-0(已废弃)或 classmap
新增类文件后运行 dump-autoload 仍无效?确认文件权限和大小写敏感问题
Linux/macOS 下文件系统区分大小写,而 Windows 不区分。如果类文件名是 UserController.php,但 use AppHttpUsercontroller; 少了个大写 C,就会报错。另外检查:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 文件是否真的保存成功(编辑器未真正写入磁盘)
- PHP 进程是否缓存了旧的 opcode(可临时加
opcache.revalidate_freq=0测试) - IDE 或终端当前工作目录是否在项目根目录(
composer dump-autoload必须在含composer.json的目录下执行)
强制重建完整映射:用 classmap 替代 PSR-4 临时兜底
当 PSR-4 映射混乱、目录结构不规范,或要兼容老式下划线类名时,直接切到 classmap 更可靠:
"autoload": {
"classmap": ["src/", "lib/"]
}
然后运行:
composer dump-autoload -o它会扫描指定目录下所有
.php 文件,生成扁平的类名 → 文件路径映射表。缺点是新增类后必须重新运行命令,但胜在不依赖命名空间与路径的严格对应关系。
最常被忽略的一点:Composer 的 autoload 机制本身不校验类是否存在,只按规则“猜”路径。一旦路径猜错,就静默失败——你看到的 Class not found 其实是 PHP 原生报错,Composer 早已退出流程了。










