【发布时间】:2020-05-21 15:33:49
【问题描述】:
花费了超过 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 输出的提示,以便我可以自己写一些东西。
【问题讨论】:
标签: php spl-autoloader