Можно ли подавлять / скрывать уведомления PHP?

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

наиболее близкий к ответу я мог найти в этот вопрос , но это все еще далеко от ответа, который я ищу. Есть ли какие-то непредвиденные недостатки в сокрытии всех уведомлений, которые генерирует PHP? Например, чтобы включить переменную из вызова POST обратно в форму из-за ошибок, я бы просто использовал:


Это сгенерирует уведомление PHP. Чтобы исправить это уведомление, я мог бы использовать что-то вроде этого:


Но,это действительно необходимо? Будет ли мой код действительно полезен от этого, а не просто повторять переменную, существует она или нет, и потенциально создавать уведомление PHP? Мне кажется, что возможность игнорировать уведомления - это преимущество использования PHP, поскольку тогда вам не нужно беспокоиться о том, определена ли переменная или нет, особенно для такого примера, как этот, где это не имеет значения.

Я также пользуюсь возможностью PHP автоматически изменять тип / приведение переменной в зависимости от того, как она используется, и вы часто найдете фрагменты кода, такие как этот:

for ($i = 0; $i < $limit; $i++) $results[] = $i; // Example

где $ results не было ранее определен, но превращается в массив, когда я пытаюсь добавить к нему новый элемент в виде массива. Я предпочитаю делать это таким образом, потому что, если в массив не добавляются результаты и мне нужно сохранить эту информацию или преобразовать ее в JSON по какой-либо причине, тогда эта конкретная переменная не будет определена и, таким образом, сэкономит дополнительную пропускную способность, даже если она минута.

$data = stdClass; // For reference, in my case this would be defined before this code
$data->results = array();
$limit = 0;
for ($i = 0; $i < $limit; $i++) $data->results[] = $i;
print json_encode($data);
// {"results":[]}

против

$data = stdClass; // For reference
$limit = 0;
for ($i = 0; $i < $limit; $i++) $data->results[] = $i;
print json_encode($data);
// []

Еще раз вопрос: какую реальную выгоду, если таковая имеется, я получу от исправления ошибок в уведомлениях, а не от их простого подавления? Как это может / может повредить мой код?

20
задан Community 23 May 2017 в 10:28
поделиться