Считается ли стандартной практикой отключать уведомления в журнале ошибок для разработки PHP - PullRequest
3 голосов
/ 07 октября 2009

Я исходил из J2EE-фона, и похоже, что разработчики PHP очень часто отключают и игнорируют уведомления с помощью выражения: сообщение об ошибке (E_ALL & ~ E_NOTICE);

Приложение, в котором я работаю, полно сообщений о неустановленных переменных? Это кажется мне очень странным.

Ответы [ 5 ]

10 голосов
/ 07 октября 2009

Это плохая практика, но она довольно распространена.

Можно сказать, что это считается стандартной практикой, поскольку это стандартная настройка из коробки.

Однако тот факт, что это настройка по умолчанию в PHP, не следует воспринимать как хорошую идею! ( кашель register_globals кашель )

Проблема заключается в том, что E_NOTICE охватывает как неопределенные переменные, так и неопределенные индексы массивов, первый из которых является гораздо лучшим указанием на ошибку, чем последний.

Классическая ошибка, которую это скрывает, использует $var, когда вы намеревались использовать $this->var. Только по этой причине я думаю, что стоит разобраться с очисткой предупреждающих сообщений неопределенного индекса массива, чтобы ошибки неопределенных переменных были более очевидными.

Я думал, что PHP 5.3 позволяет вам разделить их (я еще не использую их), но я только что посмотрел и не могу найти упоминания об этом.

0 голосов
/ 07 октября 2009

Файл php.ini по умолчанию, поставляемый с официальным дистрибутивом, немного шизофреничный. С одной стороны, он утверждает, что он хорош для разработки (например, показывает ошибки), но затем он отключает Уведомления вместе с примечанием о том, что их включение будет полезно для разработки. (Я на самом деле подал ошибку об этом, но она была закрыта, поскольку они явно не хотели это исправлять.) IME, Большинство разработчиков не изменяют это значение по умолчанию, потому что большинство из них не знают, что могут, Поэтому я вижу много кода PHP, который генерирует уведомления по этой причине.

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

0 голосов
/ 07 октября 2009

Не уверен, если это как упоминалось, но локальные серверы разработки, как:

  • Xampp;
  • Lampp;
  • Mampp;
  • Wamp;

И многие другие имеют настройки ошибок PHP, чтобы сообщать обо всех ошибках и уведомлениях. Равен error_reporting(E_ALL);.

Однако, если вам когда-нибудь понадобятся эти быстрые коды для проверки вашего кода на наличие уведомлений или ошибок, установите текущий уровень отчета об ошибках, который сервер будет выполнять для определенного сценария PHP:

Показывает ошибки, но не показывает уведомления:

error_reporting(E_ALL & ~E_NOTICE | E_STRICT);

Показывает все:

error_reporting(E_ALL);

Показывает только ошибки:

error_reporting(E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR);

Вам просто нужно добавить одну из этих строк в ваш PHP Script в начале.

PS: Не очень хорошая идея показывать уведомления на вашем хостинг-сервере. Обязательно удалите эти строки при отправке на хост-сервер


Если вы хотите изменить конфигурацию PHP.ini для одного из этих значений.

Откройте ваш конфигурационный файл PHP.ini и около строки 514º будет уровень сообщений об ошибках по умолчанию.

Открыть это помогает.

Привет

РЕДАКТИРОВАТЬ: Это была линия 514º, а не 504º. К сожалению

0 голосов
/ 07 октября 2009

Да, это считается стандартной (несмотря на мнение о хорошем или плохом) практикой. Согласно руководству по PHP :

В PHP 4 и PHP 5 значением по умолчанию является E_ALL & ~ E_NOTICE. Этот параметр не показывает ошибки уровня E_NOTICE. Вы можете показать их во время разработки.

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

0 голосов
/ 07 октября 2009

Это считается стандартной практикой, поскольку теперь это стандартная настройка для новой версии PHP.

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

Если вы программируете правильно, это не требуется

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

Для получения дополнительной информации вот страница PHP для сообщения об ошибках

:)

...