gpt4 book ai didi

php - PHP E_STRICT和__autoload()

转载 作者:行者123 更新时间:2023-12-03 08:08:48 24 4
gpt4 key购买 nike

我正在使用__autoload(),它看起来像这样:

function __autoload($class_name) {
require_once($class_name . '.class.php');
}

当错误报告为 E_ALL时,它可以正常工作。该类已加载,脚本运行无误。

当错误报告为 E_ALL | E_STRICT时,没有页面可用,我简单地得到:
"Fatal error: Class 'NameOfClass' not found in \path\to\current\script on line 0"

为什么?使用__autoload()时这是预期的行为还是我的脚本有问题?

最佳答案

问题是我正在使用自定义错误处理程序将所有错误转换为异常。

在STRICT模式下,自动加载包含的类在代码使用方面给出了一个小错误。但这被变成一个异常(exception)。

autoload会忽略异常,以便下一次自动加载(如果已注册多个)可以尝试加载该类。

因此,我的类文件中的错误从未显示过,但是阻止了该类的存在,从而在第0行问题上产生了神秘的错误。

禁用我的自定义错误处理程序意味着PHP会打印一个错误(我可以看到),而不是抛出一个异常(该错误会被自动加载抑制),然后我可以看到问题的真正原因并加以解决。

关于php - PHP E_STRICT和__autoload(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1716267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com