使用和不使用composer的PHP自动加载调试
花了2个多小时试图调试PHP中由拼写错误引起的自动加载问题 有没有一种方法可以显示PHP在尝试加载特定类时将查找什么文件? 查找将考虑当前文件的名称空间和任何spl_自动加载/编写器设置的内容 因此,可以在脚本中插入以下内容以帮助调试:使用和不使用composer的PHP自动加载调试,php,spl-autoloader,Php,Spl Autoloader,花了2个多小时试图调试PHP中由拼写错误引起的自动加载问题 有没有一种方法可以显示PHP在尝试加载特定类时将查找什么文件? 查找将考虑当前文件的名称空间和任何spl_自动加载/编写器设置的内容 因此,可以在脚本中插入以下内容以帮助调试: var_dump(showAutoLoadPaths('myspace\Controller\fancyClass')); $template = new myspace\fancyClass; 并得到如下输出: array ( 0 => 'sr
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_函数输出的任何提示,以便我自己编写一些东西。您可以在
PSR-0
和PSR-4
模式中查看有关自动加载器的更多信息
基本上,如果您注册了自动加载文件夹,他们将调用spl\u autoload\u register()
函数,因此,如果您找到该函数的内容并进行调试,您可以尝试在目录中搜索
看看自动加载模式。您可能有一个autoload()
功能,可以检查设置的文件夹
并查看更多有关自动加载器的信息