Je revoyais récemment une partie de mon code et j'ai remarqué que dans un accès de distraction, j'avais laissé une structure comme la suivante:
$guid = empty($subscription->guid) ? : $subscription->guid;
Maintenant, cela ne faisait pas ce qu'il était censé faire et c'est faux , mais puisque cette propriété est toujours définie maintenant, cela fonctionnait bien, et il n'y a pas d'erreur de syntaxe depuis 5.3 à cause du changement suivant :
Depuis PHP 5.3, il est possible de laisser de côté la partie centrale de l'opérateur ternaire. Expression expr1?: Expr3 renvoie expr1 si expr1 a la valeur TRUE, et expr3 sinon.
Je n'étais pas au courant de ce changement, et maintenant je suis curieux de savoir si je devrais l'utiliser ou non. C'est quelque chose qui me manquait cruellement dans des langages comme le rubis où vous pouvez par exemple, a = b || c
obtenir soit b
ou c
plutôt un "vrai" booléen. Cependant, la syntaxe qu'ils ont choisie pour l'opérateur ternaire me semble un peu contre-intuitive. Dois-je utiliser cela dans le code de production? Il m'a définitivement jeté quand je l'ai vu par accident.