У меня есть модуль admin, я бы хотел только для этого модуля реализовать собственный перехватчик PHP ошибок таких как: E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE и т.д
Подскажите где и как мне нужно зарегистрировать обработчик, чтобы все перехваченные ошибки перенаправлялись на MyModule/MyController/MyAction ?
Есть событие onError… о событиях читай в доках. О CErrorEvent читай в API.
class AdminErrorHandler
{
public $errorAction = 'MyModule/MyController/MyAction';
public function onError($event)
{
$event->handled = true; //Отключаем дальнейшую обработку ошибки
//...секретная обработка
//...в переменной $event находится объект класса CErrorEvent
Yii::app()->runController($this->errorAction);
}
}
$errorHandler = new AdminErrorHandler;
$app = Yii::app();
//Прикрепляем свой обработчик на событие
$app->onError = array($errorHandler, 'onError');
Или для PHP 5.3 можно сделать анонимную функцию обработчиком, без доп. класса.
Вот только смотри, нужно предусмотреть, чтобы в обработчике не было ошибок… иначе получишь бесконечную рекурсию (Ошибка в обработчике - Перенаправление обратно в обработчик).