Я подавлял уведомления в течение некоторого времени без каких-либо проблем, но я начинаю задаваться вопросом, правильно ли я поступаю. Я не могу найти логической причины, почему я не должен просто подавлять их, но некоторые другие люди, похоже, думают, что подавление их с помощью error_reporting - это ужасная вещь, но почему?
Ближайшая вещь к ответу, который я мог найти, был в этом вопросе, но который еще далек от ответа, который я ищу. Есть ли какой-то непредвиденный недостаток, чтобы скрыть все уведомления, которые генерирует PHP? Например, чтобы включить переменную из POST-запроса обратно в форму, потому что были ошибки, я просто использовал бы:
<?= $_POST['variable'] ?>
Это создаст уведомление PHP. Чтобы исправить это уведомление, я мог бы использовать что-то вроде этого:
<?= isset($_POST['variable']) ? $_POST['variable'] : '' ?>
Но это действительно необходимо? Будет ли мой код на самом деле выгоден от этого, а не просто повторять переменную независимо от того, существует она или нет и потенциально создает уведомление 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);
// []
Вопрос еще раз: какую реальную выгоду, если таковая имеется, я получу от исправления ошибок извещения, а не просто подавления их? Как это может повредить мой код?