Как «делать что-то OR DIE ()» в PHP?

Я пишу приложение php для доступа к базе данных MySQL, а в учебнике сказано что-то вроде формы

mysql_connect($host, $user, $pass) or die("could not connect"); 

Как PHP знает, что функция провалилась, так что она запускает часть штампа? Наверное, я спрашиваю, как работает «или» его часть. Я не думаю, что видел это раньше.

Если первый оператор возвращает true , тогда весь оператор должен быть true поэтому вторая часть никогда не выполняется.

Например:

 $x = 5; true or $x++; echo $x; // 5 false or $x++; echo $x; // 6 

Поэтому, если ваш запрос не увенчался успехом, он будет оценивать оператор die() и заканчивать сценарий.

PHP or работает как C's || (который, кстати, также поддерживается PHP – or просто выглядит лучше и имеет разные приоритеты оператора – см. эту страницу ).

Он известен как оператор короткого замыкания, потому что он пропустит любые оценки, как только у него будет достаточно информации, чтобы определить окончательное значение.

В вашем примере, если mysql_connect() возвращает TRUE, тогда PHP уже знает, что весь оператор будет оценивать TRUE независимо от того, что die() evalutes, и, следовательно, die() не оценивается.

Если mysql_connect() возвращает FALSE, PHP не знает, будет ли весь оператор оцениваться в TRUE или FALSE, чтобы он продолжался, и пытается выполнить evalute die() – завершение сценария в этом процессе.

Это просто хороший трюк, который использует способ or работает.

Он работает, как описано другими.

В PHP не используйте «die», так как он НЕ создает исключение (как в Perl). Вместо этого выкиньте исключение должным образом обычным способом.

die не может быть пойман на PHP и не записывается в журнал – вместо этого он печально печатает сообщение и сразу же покидает скрипт, никому не рассказывая ничего или предоставляя вам возможность записывать событие, повторять попытку и т. д.

 $con=mysql_connect($host, $user, $pass) if(!$con) { die("could not connect"); } else { echo "Connected"; }