PHP or
funktioniert wie C's ||
(das übrigens auch von PHP unterstützt wird - or
sieht einfach hübscher aus und hat einen anderen Vorrang für Operatoren - siehe diese Seite ).
Es ist bekannt als eine Kurzschluss Operator, weil er alle Auswertungen überspringt, sobald er genügend Informationen hat, um den endgültigen Wert zu bestimmen.
In Ihrem Beispiel, wenn mysql_connect()
TRUE zurückgibt, weiß PHP bereits, dass die gesamte Anweisung zu TRUE ausgewertet wird, egal was die()
wird zu ausgewertet, und daher die()
nicht ausgewertet wird.
Si mysql_connect()
FALSE zurückgibt, weiß PHP nicht, ob die gesamte Anweisung zu TRUE oder FALSE ausgewertet wird, also macht es weiter und versucht, die die()
- Das Skript wird dabei beendet.
Das ist nur ein netter Trick, der sich die Art und Weise zunutze macht, wie or
funktioniert.
3 Stimmen
Nebenbei bemerkt: Verwenden Sie diese Art von Logik nicht in tatsächlichen Anwendungen. Es erstaunt mich immer noch, wie viele Tutorials das tun.
3 Stimmen
Warum nicht? Es ist wirklich schön und gut lesbar...
12 Stimmen
Das mag für ein Tutorial einfach und angemessen sein, aber Sie wollen nicht, dass Ihr Skript vor echten Benutzern mit einer solchen Fehlermeldung unschön endet. Die Anzeige einer benutzerdefinierten Fehlerseite (ohne Angabe des tatsächlichen Fehlers!) und die Protokollierung des Fehlers sind ein Muss.
1 Stimmen
Möglicherweise können Sie diese Technik aber trotzdem anwenden.
0 Stimmen
Nicht wirklich... wenn man das Skript tötet, bleibt einem nicht viel übrig, um weiterzumachen
5 Stimmen
Ich spreche von dem "oder", nicht von dem "die".
21 Stimmen
Mysql_connect($host, $user, $pass) oder PrintNiceError('DatabsaeConnectionError');