Recentemente, eu estava revisando parte do meu código e percebi que, em um ataque de distração, havia deixado uma estrutura como a seguinte:
$guid = empty($subscription->guid) ? : $subscription->guid;
Agora, isso não estava fazendo o que deveria e está errado , mas como essa propriedade está sempre definida, agora estava funcionando bem, e não há erro de sintaxe desde o 5.3 devido à seguinte alteração :
Desde o PHP 5.3, é possível deixar de fora a parte do meio do operador ternário. A expressão expr1?: Expr3 retorna expr1 se expr1 for avaliada como TRUE e expr3 caso contrário.
Eu não estava ciente dessa mudança e agora estou curioso para usá-la ou não. Isso é algo que eu sentia muita falta de idiomas como ruby, onde você pode fazer, por exemplo, a = b || c
obter um b
ou c
mais do que um booleano 'real'. No entanto, a sintaxe que eles escolheram para o operador ternário parece um pouco contra-intuitiva para mim. Devo estar usando isso no código de produção? Definitivamente me joguei quando o vi por acidente.