Лучший возможный класс ошибок PHP - PullRequest
1 голос
/ 01 апреля 2010

Я ищу некоторые идеи кодирования для следующей задачи, которую я пытаюсь выполнить.

У меня есть список номеров ошибок, описания и удобного описания в документе.

Ex:
Error Number, Description, User Friendly Description 
-----------------------------------------------------
1, Internal Error, "An Internal Error has occurred. Please try again later".
2, Delete Failed, "Unable to delete an Entry. Please try later".

Я хочу написать PHP-класс для хранения всего вышеперечисленного таким образом, чтобы я мог легко получить к ним доступ позже, когда в коде произойдет ошибка.

Пример: Если мой код получил ошибку 2, я хочу проверить этот код ошибки со списком кодов ошибок в классе, получить описание, понятное описание и отобразить его пользователю.

Я хочу, чтобы это было минимально накладно. Так что не хочу хранить его в базе данных.

Я использую PHP5 с Zend MVC Framework. Кто-нибудь может помочь мне с лучшим примером кода?

Спасибо

Ответы [ 2 ]

1 голос
/ 01 апреля 2010
  • Напишите INI-файл с кодом ошибки и удобным текстом.
  • написать класс, который расширяет Exception, который выбирает ваши коды ошибок из INI-файла. добавить метод, например публичная функция getUserFriendlyMsg () {} которая возвращает строку из INI-файла.

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

throw new My_Exception('Delete failed',2);

в вашем, например. Контроллер:

try{
    // your code
}catch(My_Exception $e){
    echo $e->getUserFriendlyMsg();
}

Примечание: вам следует рассмотреть возможность расширения класса исключения для регистрации сбоев в файле журнала, для этого вы можете ввести уровни обслуживания. (см. руководство - обработка исключений)

0 голосов
/ 01 апреля 2010

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

Если в режиме разработки:

  • Показать подробное сообщение об ошибке

  • Если E_WARNING или хуже, выведите сообщение об ошибке в файл журнала (например, используя Zend_Log )

  • Если произошла фатальная ошибка, остановите выполнение и покажите красивую страницу с ошибкой с полной обратной трассировкой

Если в производственном режиме:

  • Регистрировать только сообщения об ошибках

  • При фатальных ошибках остановите выполнение и покажите только приятную страницу "Произошла ошибка".

Мне нравится работать с ошибками, поэтому любое исключение, которое я ловлю, я вызываю trigger_error() для выполнения вывода и регистрации.

Вы также можете расширить класс исключений по умолчанию для ведения журнала и отображения. Вы хотели бы превратить любую ошибку, которая возникает в исключения . Ручные ошибки, которые вы затем вызываете как исключение, используя throw.

Вдохновение:

Обработчик ошибок

Kohana (скриншот здесь ) - самый красивый и лучший из всех, что я видел на сегодняшний день. Это открытый исходный код, может быть, вы даже можете получить эту часть (хотя сначала убедитесь, что вы читаете лицензию.)

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