【问题标题】:PHP autoload debugging with and without composer使用和不使用 composer 的 PHP 自动加载调试
【发布时间】: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


    【解决方案1】:

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

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

    查看here 关于自动加载模式的信息。你可能有一个autoload() 函数,你可以检查设置的文件夹。

    并查看here 以了解有关自动加载器的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-30
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 2021-03-18
      • 2016-04-27
      • 2015-04-20
      相关资源
      最近更新 更多