Как "делать что-то 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";
}