Действительно ли это хорошо практика или приемлемый способ использовать ошибочное подавление PHP?
if (isset($_REQUEST['id']) && $_REQUEST['id'] == 6) {
echo 'hi';
}
if (@$_REQUEST['id'] == 6) {
echo 'hi';
}
Править:
Я думал так также. Код (и идея) от друга.
Спасибо за доказательство меня право.:)
Использование подавления ошибок - не очень хорошая практика. Даже не рекомендуется использовать $ _REQUEST. Просто используйте isset () или! Empty () или что-то еще, не ленитесь.
И еще одно: закрывать круглые скобки при использовании isset () является «хорошей практикой»:)
Я всегда использую isset (), поскольку он более конкретен. Кроме того, я бы использовал более конкретную суперглобальную переменную, поэтому используйте либо $ _POST, $ _GET, $ _SESSION. Понимание кода позволяет избежать головной боли в дальнейшем :)
Вот как я запускаю свои проверки:
if(isset($_POST['id']) && $_POST['id'] == '6')
{
// do stuff
}
Это довольно тщательная проверка, так как она проверяет наличие сообщения, а затем, является ли моя переменная частью сообщения , и, наконец, если эти два проходят, он проверяет, равна ли моя переменная 6.
Подавление ошибок с помощью @ подавляет только отображение ошибки, но не создание. Таким образом, вы получите небольшое снижение производительности из-за ошибки, если сначала не проверите isset ().
Нет, на мой взгляд, это неприемлемая практика. Помимо того, что это выглядит небрежно, пользовательские обработчики ошибок по-прежнему срабатывают даже при использовании подавления ошибок.
Руководство предлагает больше причин, чтобы полностью отказаться от его использования:
В настоящее время префикс оператора контроля ошибок «@» даже отключает сообщение об ошибках для критических ошибок, которые прерывают выполнение скрипта. Среди прочего, это означает, что если вы используете символ «@» для подавления ошибок определенной функции, и он либо недоступен, либо был введен с ошибкой, сценарий сразу же умрет, без указания причины.