TL; DR - Nein, dieser Ausdruck kann nicht kürzer gemacht werden.
Was Sie wollen, ist für den verkürzten ternären Ausdruck eine implizite isset()
durchzuführen. Dies wurde auf der mailing list diskutiert und eine ifsetor
RFC wurde erstellt, die das Konzept ebenso abdeckt.
Da der verkürzte ternäre Operator bereits zum Zeitpunkt der oben genannten Diskussion gab, war so etwas wie diese proposed einen nicht existierenden Betreiber ??
mit:
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
Assign 'default value'
wenn $v
nicht definiert ist.
Nichts wurde jedoch bisher in der Hauptsprache implementiert. Bis dahin kann das, was Sie geschrieben haben, nicht kürzer sein.
Dieses schrecklich Konstrukt ist kürzer, aber beachten Sie, dass es nicht die gleiche weil es den Standardwert zuweist, wenn die Variable existiert, aber ausgewertet false
:
// DO NOT USE
$v = @$v ?: 'default value';
Was passiert, wenn '$ v' bereits gesetzt ist, und es ist' ‚‘ ' oder "0" oder "null" oder "falsch"? – Carlos
Ich verstehe. Aber ich denke nicht, dass es ein guter Ansatz ist ... – Carlos
@jackflash Daher meine Erwähnung von "schrecklichen Konstrukt" –