我将set_error_handler()
函数设置为在出现错误时调用函数。
在该函数中,我有自己的异常类实现:
function acs_error_handler($errno, $errstr, $errfile, $errline) {
throw new acs_exception($errstr, $errno);
}
这给了我以下错误:
致命错误:未找到类'acs_exception'
由于某种原因,此功能不会调用我使用以下设置的自动加载功能:
spl_autoload_register('__autoload');
如果我添加以下行:
__autoload('acs_exception');
在错误函数中调用类之前一切正常。
我的问题是:当我在错误触发函数中调用acs_exception类时,__autoload()
函数不应该触发吗?
答案 0 :(得分:3)
Here's a related PHP bug report
您的错误是在 编译时,禁用自动加载 (和spl_autoload同时)。
不会像PHP5.3那样修复 引起很多其他问题。
答案 1 :(得分:1)
这已在PHP 5.4.21上修复 - 现在SPL自动加载功能也是由错误处理功能触发的! :)