Обработка PHP ошибок в модуле

Здравствуйте.

У меня есть модуль 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 можно сделать анонимную функцию обработчиком, без доп. класса.


$app->onError = function($event)

{

    $event->handled = true;

    //...

}

Вот только смотри, нужно предусмотреть, чтобы в обработчике не было ошибок… иначе получишь бесконечную рекурсию (Ошибка в обработчике - Перенаправление обратно в обработчик).