-1

花了 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 输出的提示,这样我就可以自己写一些东西。

4

1 回答 1

0

PSR-0您可以在和PSR-4模式中查看有关自动加载器的更多信息。

基本上,如果您注册了自动加载文件夹,它们将调用spl_autoload_register()函数,因此,如果您找到具有此功能的内容并进行调试,您可以尝试在目录中搜索

在这里查看自动加载模式。您可能有一个autoload()功能可以检查设置的文件夹。

在此处查看有关自动加载器的更多信息。

于 2020-05-21T16:55:49.750 回答