static function error_handler($errno, $errstr, $errfile, $errline) { // если ошибка попадает в отчет (при использовании оператора "@" error_reporting() вернет 0) if (error_reporting() & $errno) { $errors = array(E_ERROR => 'E_ERROR', E_WARNING => 'E_WARNING', E_PARSE => 'E_PARSE', E_NOTICE => 'E_NOTICE', E_CORE_ERROR => 'E_CORE_ERROR', E_CORE_WARNING => 'E_CORE_WARNING', E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_COMPILE_WARNING => 'E_COMPILE_WARNING', E_USER_ERROR => 'E_USER_ERROR', E_USER_WARNING => 'E_USER_WARNING', E_USER_NOTICE => 'E_USER_NOTICE', E_STRICT => 'E_STRICT', E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', E_DEPRECATED => 'E_DEPRECATED', E_USER_DEPRECATED => 'E_USER_DEPRECATED'); // выводим свое сообщение об ошибке $tpl = new View(); $tpl->clear(); $tpl->path = PATH . DIRECTORY_SEPARATOR . "view" . DIRECTORY_SEPARATOR . "errors" . DIRECTORY_SEPARATOR; $tpl->set("THEME", DIRECTORY_SEPARATOR . "view" . DIRECTORY_SEPARATOR . "errors" . DIRECTORY_SEPARATOR); $message = "<b>{$errors[$errno]}:</b> {$errstr} <i>(<b>{$errfile}</b> на {$errline} строке)</i><br />\n"; $tpl->set('message', $message); $loadTpl = 'php.tpl'; $tpl->loadTpl($loadTpl); $tpl->view(); $tpl->clear(); } // не запускаем внутренний обработчик ошибок PHP return TRUE; }