set_error_handler函数不调用autoload

时间:2009-12-21 20:43:11

标签: php autoload

我将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()函数不应该触发吗?

2 个答案:

答案 0 :(得分:3)

Here's a related PHP bug report

  

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

     

不会像PHP5.3那样修复   引起很多其他问题。

答案 1 :(得分:1)

这已在PHP 5.4.21上修复 - 现在SPL自动加载功能也是由错误处理功能触发的! :)