私はMySQLデータベースにアクセスするためのPHPアプリを書いています。チュートリアルでは、
mysql_connect($Host, $user, $pass) or die("could not connect");
どのようにPHPはダイの部分を実行するように関数が失敗したことを知っていますか?私はそれの「または」部分がどのように機能するかを聞いていると思います。前に。
最初のステートメントがtrue
を返す場合、ステートメント全体がtrue
でなければならないため、2番目の部分は実行されません。
例えば:
_$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
_
したがって、クエリが失敗した場合、die()
ステートメントを評価し、スクリプトを終了します。
PHPのor
はCの_||
_のように機能します(これはPHP-or
は見た目がよく、演算子の優先順位も異なります。 このページ を参照してください。
short-circuit 演算子として知られています。最終値を決定するのに十分な情報が得られると評価をスキップするからです。
あなたの例では、mysql_connect()
がTRUEを返す場合、PHPはすでにdie()
が評価されても、ステートメント全体がTRUEと評価されることを知っているため、die()
は評価されません。
mysql_connect()
がFALSEを返す場合、PHPはステートメント全体がTRUEまたはFALSEに評価されるかどうかを知らないため、続行してdie()
を評価しようとします。プロセス内のスクリプト。
これは、or
が機能する方法を利用する素敵なトリックです。
他の人が説明したように機能します。
PHPでは、(Perlの場合のように)例外を発生させないため、「die」を使用しないでください。代わりに、通常の方法で適切に例外をスローします。
dieはPHPでキャッチできず、ログに記録されません-代わりに、メッセージを不格好に出力し、誰かに何も伝えたり、イベントを記録したり、再試行したりする機会を与えることなく、すぐにスクリプトを終了します。