условные операторы — избыточное условие в коде PHP или нет?

Многие разработчики PHP пишут следующее условное утверждение:

if (isset($_POST['action']) and $_POST['action'] == 'someValue') {
something();
}

Для чего полезно написать это условное утверждение?

Когда я смотрю на это, кажется, что если $_POST['action'] == 'someValue'
подразумевает, что isset($_POST['action'] == TRUE,

Итак, кажется, что следующее условное утверждение будет делать то же самое:

if ($_POST['action'] == 'someValue') {
something();
}

-1

Решение

Если вы просто позвоните:

if ($_POST['action'] == 'someValue') {
something();
}

а также $_POST["action"] не установлен, то поведение PHP по умолчанию — пожаловаться на undefined index, что приведет к direct string output,
Теперь рассмотрим, был ли ваш PHP-запрос направлен обратно на клиент JSON … Ваш JSON был бы malformed one,

Еще одна проблема, рассмотрите следующее:

if ($_POST['action'] == 'someValue') {
something();
}
...
header("Location: foo.php");

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

Конечно, вы могли бы замолчать эти ошибки с этим:

if (@$_POST['action'] == 'someValue') {
something();
}

но это в равной степени плохая практика, она не делает программу лучше, но медленнее и труднее ловить ошибки.

1

Другие решения

PHP выдает уведомление, если используется неопределенная переменная или индекс.

Эта проверка существует, чтобы предотвратить это.

1

Если ключ в массиве не существует, PHP вызовет уведомление о доступе к нему. Так что это не является избыточным, но это зависит от ваших настроек, если уведомление отображается.

1
По вопросам рекламы [email protected]