4

我将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');

在错误函数中调用类之前,一切正常。

我的问题是:__autoload()当我在错误触发函数中调用 acs_exception 类时,函数不应该触发吗?

4

2 回答 2

3

这是一个相关的 PHP 错误报告

您的错误是在编译时触发的,这会禁用自动加载(同时禁用 spl_autoload)。

不会针对 PHP5.3 进行修复,因为它可能会导致许多其他问题。

于 2009-12-21T21:25:46.837 回答
1

这已在 PHP 5.4.21 中修复 - 现在 SPL 自动加载函数也由错误处理函数触发!:)

于 2014-10-01T07:54:28.713 回答