PHP Coding Standard |
![]() |
Nach Möglichkeit sollten Trinitäts-Operatoren (englisch: ternary operator) in eine Zeile passen. Komplexe Bedingungen sind demnach zu vermeiden. Ein Trinitäts-Operator darf nicht verschachtelt werden.
$value = (!($some_complicated_value xor function_with_unknown_return_value())
and !$different_settings) ? $w0Ot->noComments($x) : $wO0t->noComments($y);
$value = (function_returning_true())
? $number = (0) ? 1 : $else_or_what
: $different_number = (1) ? 3 : 4;
$value = (function_returning_false()) ? $number = (0) ? 1 : $else_or_what : $different_number
= (1) ? 3 : 4;
Na, welchen Wert hat "$value"? Selbst wenn jemand in weniger als 10 Sekunden die Frage beantworten kann, darf solcher Code nicht verwendet werden. Theoretisch ist es möglich eine Menge solcher Trinitäts-Operatoren zu verschachteln, aber selbst zwei oder drei Ebenen sind schon unübersichtlich, wie man an dem Beispiel oben auch sehen kann.
// it is better to use an if statement
if (function_returning_false())
{
$number = (0) ? 1 : $else_or_what;
$value = $number;
}
else
{
$different_number = (1) ? 3 : 4;
$value = $different_number;
}
Wenn sehr komplizierte Vergleiche in einer IF-Struktur gemacht werden sollen, die auch in einem Trinitäts-Operator möglich wären, muss auf jeden Fall eine übersichtliche Syntax verwendet werden. Man sollte jedoch eher den Kontrollstrukturen SWITCH und/oder IF den Vorzug geben. Gegen einfache Trinitäts-Operatoren ist jedoch nichts einzuwenden. Manchmal unterstützen sie sogar das Prinzip der Einfachheit.