Ich schreibe eine PHP-App, um auf eine MySQL-Datenbank zuzugreifen, und in einem Tutorial steht etwas über das Formular
mysql_connect($host, $user, $pass) or die("could not connect");
Woher weiß PHP, dass die Funktion fehlgeschlagen ist, sodass der Die-Teil ausgeführt wird? Ich frage mich wohl, wie das "oder" funktioniert. Ich glaube nicht, dass ich es schon einmal gesehen habe.
php
mysql
exception-handling
conditional
Chustar
quelle
quelle
Antworten:
Wenn die erste Anweisung zurückgegeben wird
true
, muss die gesamte Anweisung sein,true
daher wird der zweite Teil niemals ausgeführt.Beispielsweise:
Wenn Ihre Abfrage nicht erfolgreich ist, wird die
die()
Anweisung ausgewertet und das Skript beendet.quelle
with
Aussage, wenn es sich eigentlich nur um einen booleschen Ausdruck handelt ... Ich denke, bei der Verwendung dieses Ausdrucks ist besondere Vorsicht geboten, wenn von Ihnen erwartet wird, dass Sie im Falle von eine Bereinigung durchführen Fehler. Bitte korrigieren Sie mich, wenn ich falsch liege, aber wenn Sie dies tunfunc_call($file) or die();
und die Funktion fehlschlägt, bleibt die Datei offen, wenn die Skripte sterben.or
in Situationen zu arbeiten, in denen einif
funktionieren könnte?PHPs
or
funktionieren wie Cs||
(das übrigens auch von PHP unterstützt wird -or
sieht einfach besser aus und hat eine andere Operator-Priorität - siehe diese Seite ).Es wird als Kurzschlussoperator bezeichnet , da alle Auswertungen übersprungen werden, sobald genügend Informationen vorliegen, um den endgültigen Wert zu bestimmen.
Wenn in Ihrem Beispiel
mysql_connect()
TRUE zurückgegeben wird, weiß PHP bereits, dass die gesamte Anweisungdie()
unabhängig von der Bewertung als TRUE ausgewertet wird und daherdie()
nicht ausgewertet wird.Wenn
mysql_connect()
FALSE zurückgegeben wird, weiß PHP nicht, ob die gesamte Anweisung TRUE oder FALSE ergibt, und versucht,die()
das Skript zu bewerten. Dabei wird das Skript beendet.Es ist nur ein schöner Trick, der die Funktionsweise ausnutzt
or
.quelle
Es funktioniert wie andere beschrieben haben.
Verwenden Sie in PHP nicht "die", da dies KEINE Ausnahme auslöst (wie in Perl). Wirf stattdessen eine Ausnahme wie gewohnt richtig aus.
Die kann nicht in PHP abgefangen werden und protokolliert nicht. Stattdessen wird die Nachricht unanständig gedruckt und das Skript sofort beendet, ohne dass jemandem etwas gesagt wird oder Sie die Möglichkeit haben, das Ereignis aufzuzeichnen, es erneut zu versuchen usw.
quelle
quelle