isset ($var) по сравнению с $var

Действительно ли это хорошо практика или приемлемый способ использовать ошибочное подавление PHP?

if (isset($_REQUEST['id']) && $_REQUEST['id'] == 6) {
  echo 'hi';
}

if (@$_REQUEST['id'] == 6) {
  echo 'hi';
}

Править:
Я думал так также. Код (и идея) от друга.
Спасибо за доказательство меня право.:)

11
задан johankj 8 April 2010 в 15:15
поделиться

4 ответа

Использование подавления ошибок - не очень хорошая практика. Даже не рекомендуется использовать $ _REQUEST. Просто используйте isset () или! Empty () или что-то еще, не ленитесь.

И еще одно: закрывать круглые скобки при использовании isset () является «хорошей практикой»:)

12
ответ дан 3 December 2019 в 02:10
поделиться

Я всегда использую isset (), поскольку он более конкретен. Кроме того, я бы использовал более конкретную суперглобальную переменную, поэтому используйте либо $ _POST, $ _GET, $ _SESSION. Понимание кода позволяет избежать головной боли в дальнейшем :)

Вот как я запускаю свои проверки:

if(isset($_POST['id']) && $_POST['id'] == '6')
{
     // do stuff
}

Это довольно тщательная проверка, так как она проверяет наличие сообщения, а затем, является ли моя переменная частью сообщения , и, наконец, если эти два проходят, он проверяет, равна ли моя переменная 6.

2
ответ дан 3 December 2019 в 02:10
поделиться

Подавление ошибок с помощью @ подавляет только отображение ошибки, но не создание. Таким образом, вы получите небольшое снижение производительности из-за ошибки, если сначала не проверите isset ().

16
ответ дан 3 December 2019 в 02:10
поделиться

Нет, на мой взгляд, это неприемлемая практика. Помимо того, что это выглядит небрежно, пользовательские обработчики ошибок по-прежнему срабатывают даже при использовании подавления ошибок.

Руководство предлагает больше причин, чтобы полностью отказаться от его использования:

В настоящее время префикс оператора контроля ошибок «@» даже отключает сообщение об ошибках для критических ошибок, которые прерывают выполнение скрипта. Среди прочего, это означает, что если вы используете символ «@» для подавления ошибок определенной функции, и он либо недоступен, либо был введен с ошибкой, сценарий сразу же умрет, без указания причины.

3
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: