Поймайте и зарегистрируйте фатальные ошибки, предупреждения, уведомления в Zend Framework - PullRequest
3 голосов
/ 04 августа 2010

В настоящее время я использую базовый контроллер ошибок, который выглядит следующим образом:

class ErrorController extends My_MyController
{

    public function errorAction()
    {
        $errors = $this->_getParam('error_handler');

        switch ($errors->type) {
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
                // 404 error -- controller or action not found
                $this->getResponse()
                     ->setRawHeader('HTTP/1.1 404 Not Found');

                $this->view->headTitle('HTTP/1.1 404 Not Found');
                $this->view->message = 'HTTP/1.1 404 Not Found';

                break;
            default:
                // application error; display error page, but don't change
                // status code

                // Log the exception:
                $exception = $errors->exception;
                $log = new Zend_Log(
                    new Zend_Log_Writer_Stream(
                        BASE_PATH . '/logs/applicationException.log'
                    )
                );
                $log->debug($exception->getMessage() . "\n" .
                            $exception->getTraceAsString());

                $this->view->headTitle('HTTP/1.1 404 Not Found');
                $this->view->message = 'Application error';

                break;
        }

        $this->view->exception = $errors->exception;
    }
}

Это, однако, только ловит и регистрирует исключения приложения. Он не будет регистрировать любые предупреждения, уведомления и фатальные ошибки.

Я бы тоже хотел это записать. Есть ли рекомендуемый способ сделать это в ErrorController? Или это должно быть сделано вне ErrorController в index.php (поскольку Zend Framework ErrorHandler не будет обрабатывать только маршрут, пропущенные исключения приложений / действий и исключения в контроллерах действий)?

1 Ответ

2 голосов
/ 04 августа 2010

Уведомления и предупреждения не являются (или не должны) быть фатальными для приложения.Фатальные ошибки делают то, что говорят на жестяной банке, и иногда их невозможно поймать.Но, если вам действительно нужно, возможно, посмотрите на:

http://php.net/manual/en/function.set-error-handler.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...