Функция set_error_handler, не вызывающая автозагрузку

У меня установлена set_error_handler() для вызова функции при возникновении ошибки.

В этой функции у меня есть собственная реализация класса исключения:

 function acs_error_handler($errno, $errstr, $errfile, $errline) { throw new acs_exception($errstr, $errno); } 

Это дает мне следующую ошибку:

Неустранимая ошибка: Class 'acs_exception' не найден

По какой-то причине эта функция не вызывает мою функцию автозагрузки, которую я установил, используя:

 spl_autoload_register('__autoload'); 

Если я добавлю строку:

 __autoload('acs_exception'); 

перед вызовом класса в функции ошибки все это работает.

Мой вопрос: не должна ли __autoload() срабатывать, когда я вызываю класс acs_exception в функции запуска ошибки?

Вот связанный отчет об ошибке PHP .

Ваша ошибка запускается во время компиляции, которая одновременно отключает автозагрузку (и spl_autoload).

Не будет исправлено для PHP5.3, так как это может вызвать множество других проблем.

Это было исправлено на PHP 5.4.21 – теперь функции автозагрузки SPL также запускаются из функций обработки ошибок! 🙂