私は、MySQLデータベースにアクセスするためのphpアプリを書いており、チュートリアルでは、次のような形式のメッセージが表示されます
mysql_connect($host, $user, $pass) or die("could not connect");
PHPは、関数が失敗したことをどのようにして認識し、ダイパーツを実行しますか?私はそれの「または」部分がどのように機能するかを尋ねていると思います。今まで見たことがないと思います。
私は、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()ステートメントが評価され、スクリプトが終了します。
withステートメントのようなある種の高度な機能だと思っていましたが、それは実際にはブール式だけです...エラー。私が間違っている場合は修正してください。もしそうfunc_call($file) or die();して関数が失敗した場合、スクリプトが終了してもファイルは開いたままになります。
orするif可能性のある状況で使用するのも良い習慣ですか?
PHPはorCと同様に機能します||(偶然にもPHPでもサポートされています- or見栄えがよく、演算子の優先順位が異なります - このページを参照してください)。
最終値を決定するのに十分な情報が得られると評価をスキップするため、短絡演算子と呼ばれます。
あなたの例では、mysql_connect()がTRUEを返す場合、PHPはステートメント全体がTRUEに評価されることをすでに知っているため、評価対象が何でdie()あれ、die()評価されません。
場合はmysql_connect()返すFALSE、PHPは、それがevaluteにに行くとしようとして文全体がTRUEまたはFALSEに評価されるかどうかわからないdie()-プロセス内のスクリプトを終了します。
これは、or機能のしくみを利用した素晴らしいトリックです。