Ich habe kürzlich einen Teil meines Codes überprüft und festgestellt, dass ich in einem Anfall von Geistesabwesenheit eine Struktur wie die folgende hinterlassen habe:
$guid = empty($subscription->guid) ? : $subscription->guid;
Nun, dies hat nicht das getan, was es soll und ist falsch , aber da diese Eigenschaft jetzt immer festgelegt ist, hat es einwandfrei funktioniert und es gibt seit 5.3 keinen Syntaxfehler aufgrund der folgenden Änderung :
Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operators wegzulassen. Ausdruck expr1 ?: Expr3 gibt expr1 zurück, wenn expr1 TRUE ergibt, andernfalls expr3.
Ich war mir dieser Änderung nicht bewusst und bin jetzt gespannt, ob ich sie verwenden sollte oder nicht. Dies ist etwas, was mir in Sprachen wie Ruby schmerzlich gefehlt hat, wo man zB a = b || c
entweder einen b
oder c
einen "echten" Booleschen Wert erhalten kann. Die Syntax, die sie für den ternären Operator gewählt haben, scheint mir jedoch ein wenig kontraintuitiv zu sein. Sollte ich dies im Produktionscode verwenden? Es warf mich definitiv, als ich es zufällig sah.