Какие лучшие способы существуют, чтобы избежать изобилия 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_NOTICE. Таким образом, это может помочь отделить ожидаемые уведомления об отладке от потенциальных проблем.
Но это тоже неудовлетворительно. Отсюда вопрос. Кто-нибудь использует или знает более сложный обработчик ошибок PHP. Я представляю что-то, что:
Несомненно, в какой-то инфраструктуре уже должен быть такой обработчик ошибок пользователя.
Ой, кто-нибудь, пожалуйста, помогите переписать это. Длительное объяснение не удается.