E_NOTICE? == E_DEBUG, избегая isset () и @ с более изощренным обработчиком ошибок

Какие лучшие способы существуют, чтобы избежать изобилияisset() в логике приложения и сохранить способность видеть сообщения отладки (E_NOTICE)когда требуется?

Сначала презумпция: E_NOTICE - это не ошибка, это неправильное выражение, и на самом деле оно должно быть E_DEBUG. Однако, хотя это верно для неустановленных переменных (PHP по-прежнему является языком сценариев), некоторые функции файловой системы и т. Д. Тоже их выбрасывают. Следовательно, желательноразвивать с включенными E_NOTICE.

Однако не все уведомления об отладке полезны, поэтому это распространенная (к сожалению) идиома PHP длявводитьisset() и @ во всей логике приложения. Конечно, существует множество допустимых вариантов использования для isset / empty, но в целом кажетсясинтаксическая соль и может на самом деле препятствовать отладке.

Вот почему я в настоящее время использую букмарклет error_reporting и тупой переключатель вкл / выкл:

// javascript:(function(){document.cookie=(document.cookie.match(/error_reporting=1/)?'error_reporting=0':'error_reporting=1')})()

if (($_SERVER["REMOTE_ADDR"] == "127.0.0.1")
    and $_COOKIE["error_reporting"])
{
    error_reporting(E_ALL|E_STRICT);
}
else {/* less */}

Однако это все еще оставляет мне проблему с наличием слишком большого количества уведомлений для поиска после включения. В качестве обходного пути я мог бы использовать оператор подавления ошибок @. В отличие от isset (), он не полностью уничтожает опции отладки, потому что пользовательский обработчик ошибок все еще может получать подавленные E_NOTICEs. Так что это может помочь отделитьожидаемый Отладка уведомлений от потенциальных проблем.

Но это также неудовлетворительно. Отсюда и вопрос. Кто-нибудь использует или знает более сложный обработчик ошибок PHP. Я представляю себе что-то, что:

выводит нефильтрованные ошибки / предупреждения / уведомления (с абсолютным позиционированием CSS?)и AJAX-этажерка для проверки и подавления на стороне клиентано также экономит список фильтрацииожидается и "одобренный" уведомления или предупреждения.

Конечно, некоторые фреймворки уже должны иметь такой обработчик ошибок пользователя.

В основном я заинтересован в предупреждении / управлении уведомлениями.Полное подавление E_NOTICE действительно нежелательно.E_NOTICESявляются в розыске. Просто их меньше. По умолчанию выделите те, которые могут меня волновать, а не ожидаемые.Если я запускаю без параметра? Order =, происходит ожидаемое УВЕДОМЛЕНИЕ. О котором, как и следовало ожидать, мне не нужно сообщать более одного раза.Однако, когда я нахожусь в режиме полной отладки, я хочу видеть наличие неопределенных переменных через присутствие (или, что более интересно, отсутствие) упомянутых уведомлений об отладке. -> Это то, что я думаю, что они для. Отказ от isset приносит неявные языковые операторы печати.Также следует понимать, что речь идет о случаях использования, в которых подходит обычная семантика обработки форм PHP, а не об областях приложения, где строгость обязательна.

О, кто-то, пожалуйста, помогите переписать это. Длительные объяснения не удаются.

Ответы на вопрос(9)

Ваш ответ на вопрос