直接查看 vendor/composer/autoload_psr4.php 和 autoload_classmap.php 是确认 psr-4 配置是否生效的最可靠方式;若文件中无对应命名空间条目,说明 composer.json 中 autoload 配置未被识别或未执行 composer dump-autoload。

直接看 vendor/composer/autoload_psr4.php 和 vendor/composer/autoload_classmap.php,比猜配置靠谱得多。
检查 autoload_psr4.php 里有没有你的命名空间
这个文件是 PSR-4 映射的最终体现,不是缓存,是执行依据。打开它,搜索类似 "App\" 这样的键(注意末尾双反斜杠),确认值是不是你预期的绝对路径,比如 ["/var/www/project/src/"]。如果搜不到,说明 composer.json 里的 psr-4 配置根本没被识别——常见原因包括:autoload 写在了 require 下面、拼错成 autoloader、命名空间少写了结尾反斜杠、路径用了 ./src/ 这种相对写法。
确认类名是否真能匹配到某个前缀
PSR-4 匹配靠前缀最长匹配,不是模糊查找。比如类 AppHttpControllersHomeController,会依次尝试匹配 "AppHttpControllers"、"AppHttp"、"App",取第一个存在的。如果只配了 "App" => "src/",那它就会去拼 src/Http/Controllers/HomeController.php;但如果你实际文件在 src/App/Http/Controllers/HomeController.php,就必然失败。这时要检查三者是否完全对齐:namespace 声明、目录结构、文件名大小写。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
运行 composer dump-autoload -v 看实时输出
这个命令不光生成文件,更关键的是告诉你当前生效的规则。如果输出里有 PSR-4 mapping: ["App\" => "src/"],说明配置已识别;如果只有 Generating optimized autoload files 却没列映射项,基本可以断定 composer.json 格式或层级错了。它还会在卡住时明确报出哪个文件解析失败,比如 Parse error on line 12 in src/helpers.php,这时候不用全局扫,就盯那个文件。
验证 files 类型是否真的被加载
files 不走类查找逻辑,而是无条件 require_once。但它生效的前提是:入口文件(如 index.php)必须先 require __DIR__ . '/vendor/autoload.php';。漏掉这行、路径写成 ../vendor/autoload.php、或者 require 放在调用函数之后,都会导致 Call to undefined function。另外,files 数组里的路径必须是相对于 composer.json 的,不能缺 .php 后缀,也不能以 / 开头。
最常被忽略的一点:修改 composer.json 后,vendor/composer/autoload_psr4.php 不会自动更新——它只在你手动运行 composer dump-autoload 时重写。哪怕配置完全正确,跳过这步就等于没配。










