Hallo,
ich weiss zwar, wie der folgende Beispielscode
mysql_select_db(blabla...) or die("ERROR");
abgehandelt wird. Ich moechte aber gerne wissen, ob
diese spezielle Syntax von "or" irgendwo dokumentiert
ist. Or ist hier ja kein Operator, sondern eine Kon-
trollstruktur. Ich kann aber nirgendwo Infos zu dieser
Syntax finden. Weiss jemand, was genau ein or an die-
ser Stelle macht?
Grundsätzlich handelt es sich bei diesem OR-Konstrukt immer noch um einen Ausdruck:
(variable = ) funktion1() OR funktion2();
Dass das Resultat der OR-Verknüpfung nirgendwo gespeichert ist, mag befremdlich erscheinen, ist aber wohl ganz normal.
Nun kommt noch ein Mechanismus zum Tragen, der die Ausführung von funktion2() verhindert: Short-Circuit-Evaluation. OR gibt dann "wahr" zurück, wenn einer der beiden Operanden wahr ist. Wenn funktion1() schon wahr ist, dann wird funktion2() garnicht mehr geprüft, weil das Resultat von OR schon feststeht. Bei AND ist es genauso, nur wird abgebrochen, wenn der erste Operand false ergibt.
Auf diese Weise wird das die() nur dann ausgeführt, wenn die erste Funktion false ergibt - meist, weil irgendwas fehlschlägt.
Das Prinzip ist mir übrigens zuerst bei Perl begegnet - mag sein, dass PHP sich das abgeguckt hat. Nicht alle Sprachen bieten diese relativ simple Methode zum Abbruch bei Fehlern an.
- Sven Rautenberg