花了 2 个多小时尝试在 PHP 中调试由拼写错误引起的自动加载问题。
有没有办法显示 PHP 在尝试加载特定类时会查找什么文件?寻找将考虑当前文件的命名空间和任何 spl_autoload / composer 设置的东西。
因此,可以将以下内容插入脚本中以帮助调试:
var_dump(showAutoLoadPaths('myspace\Controller\fancyClass'));
$template = new myspace\fancyClass;
并获得如下输出:
array (
0 => 'src/myspace/Controller/fancyClass',
)
Undefined class : fancyClass
允许我运行:
ls -la src/myspace/Controller/fancyClass
ls: cannot access 'Controller': No such file or directory
ls -la src/myspace
drwxrwxr-x 1 user user 74 May 21 15:47 Controllers
从上面可以看出,PHP 正在寻找一个文件夹“Controller”,但该文件夹实际上名为“Controllers”!
我试图解释 spl_autoload_functions() 的输出,但我无法弄清楚文件中的内容。对现有/内置解决方案的任何建议都会很棒,但如果不存在,任何关于解码 spl_autoload_functions 输出的提示,这样我就可以自己写一些东西。