Trinitäts-Operator
Aus php bar
Der Trinitäts-Operator (engl. Ternary-Operator), ist ein Ausdruck, der eine Fallunterscheidung beinhaltet. Dies stellt eine besonders verkürzte Kombination aus Zuweisung und Abfrage dar.
Kurz:
1 $foo = $aussage ? $wennWahr : $wennFalsch;
Wenn $aussage WAHR ist, dann wird $wennWahr zurückgegeben, ansonsten wird $wennFalsch zurückgegeben.
Auf diese Weise lassen sich Ausgaben und Zuweisungen, die zwischen zwei einzelnen (nicht mehr) Argumenten
variieren, in Kurzform darstellen.
Der Trinitäts-Operator ist eine Kurschreibweise für folgende Konstruktion.
1 // Trinität 2 $foo = $aussage ? $wennWahr : $wennFalsch; 3 // Ausgeschriebene Form 4 if ($aussage) { 5 $foo = $wennWahr; 6 } else { 7 $foo = $wennFalsch; 8 }
Beispiel:
1 // normal 2 if (true == $success) { 3 echo '+'; 4 } else { 5 echo '-'; 6 } 7 8 // kurz 9 if (true == $success) echo '+'; else echo '-'; 10 11 // noch kuerzer 12 echo $success ? '+' : '-';
Folgendes ist auch möglich:
1 // if-Methode 2 if ($success) { 3 func1('w00t'); 4 } else { 5 func2('d00d'); 6 } 7 8 // kurz, da nur ein Befehl pro Zweig ausgefuehrt wird, kann man die geschweiften Klammer weglassen 9 if ($success) some_function('w00t'); else other_function('d00d'); 10 11 // noch kürzer 12 $success ? func1('w00t') : func2('d00d');
Shortcut (ab PHP 5.3)
Ab PHP 5.3 gibt es auch eine Kurzform des ?:-Operators:
1 echo $a ?: $b;
In dieser Form wird $a ausgewertet. Wenn $a einen wahren Wert ergibt wird $a zurück gegeben, ansonsten $b. Eine identische Langform wäre
1 echo $a ? $a : $b;
Dabei ist zu beachten, dass die Prüfung des ersten Operanden nicht der durch isset/empty entspricht sondern eines normalen bool'schen Vergleiches. Folgender Code führt daher zu einem E_STRICT Fehler, wenn die Variable nicht gesetz wurde:
1 echo $_GET['id'] ?: 0;
Wenn die Fehlermeldung mit dem @-Operator unterdrückt wird kann dieser Shortcut genutzt werden um dieExistenz von Request-Variablen zu prüfen und andernfalls auf default-Werte zurück zu fallen.

