Многие разработчики PHP пишут следующее условное утверждение:
if (isset($_POST['action']) and $_POST['action'] == 'someValue') {
something();
}
Для чего полезно написать это условное утверждение?
Когда я смотрю на это, кажется, что если $_POST['action'] == 'someValue'
подразумевает, что isset($_POST['action'] == TRUE
,
Итак, кажется, что следующее условное утверждение будет делать то же самое:
if ($_POST['action'] == 'someValue') {
something();
}
Если вы просто позвоните:
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();
}
но это в равной степени плохая практика, она не делает программу лучше, но медленнее и труднее ловить ошибки.
PHP выдает уведомление, если используется неопределенная переменная или индекс.
Эта проверка существует, чтобы предотвратить это.
Если ключ в массиве не существует, PHP вызовет уведомление о доступе к нему. Так что это не является избыточным, но это зависит от ваших настроек, если уведомление отображается.