Как "делать что-то OR DIE()" в PHP?
Я пишу приложение php для доступа к базе данных MySQL, а в учебнике сказано что-то вроде формы
mysql_connect($host, $user, $pass) or die("could not connect");
Как PHP знает, что функция не удалась, так что она запускает часть штампа? Наверное, я спрашиваю, как работает "или" его часть. Я не думаю, что видел это раньше.
Ответы
Ответ 1
Если первый оператор возвращает true
, то весь оператор должен быть true
, поэтому вторая часть никогда не выполняется.
Например:
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
Поэтому, если ваш запрос не увенчался успехом, он будет оценивать оператор die()
и заканчивать script.
Ответ 2
PHP or
работает как C ||
(который, кстати, также поддерживается PHP - or
, выглядит лучше и имеет различный приоритет оператора - см. на этой странице).
Он известен как оператор short-circuit, потому что он пропустит любые оценки, как только у него будет достаточно информации, чтобы определить окончательное значение.
В вашем примере, если mysql_connect()
возвращает TRUE, тогда PHP уже знает, что весь оператор будет оценивать значение TRUE независимо от того, что die()
evalutes, и, следовательно, die()
не оценивается.
Если mysql_connect()
возвращает FALSE, PHP не знает, будет ли весь оператор оцениваться как TRUE или FALSE, чтобы он продолжался, и попытался evalute die()
- завершение script в процессе.
Это просто приятный трюк, который использует способ or
.
Ответ 3
Он работает, как описано другими.
В PHP не используйте "die", так как он не вызывает исключение (как в Perl). Вместо этого исключите исключение нормальным образом.
die не может быть пойман в PHP и не записывается в журнал - вместо этого он печатает сообщение нечеловечески и немедленно покидает script, не сообщая никому ничего или предоставляя вам возможность записывать событие, повторять и т.д.
Ответ 4
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo "Connected";
}