У меня установлена 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 также запускаются из функций обработки ошибок! 🙂