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.