Recientemente estaba revisando parte de mi código y noté que en un ataque de distracción, había dejado una estructura como la siguiente:
$guid = empty($subscription->guid) ? : $subscription->guid;
Ahora, esto no estaba haciendo lo que se supone que debe hacer y está mal , pero como esa propiedad siempre está configurada ahora funcionaba bien, y no hay un error de sintaxis desde 5.3 debido al siguiente cambio :
Desde PHP 5.3, es posible omitir la parte media del operador ternario. Expresión expr1?: Expr3 devuelve expr1 si expr1 se evalúa como VERDADERO y expr3 de lo contrario.
No estaba al tanto de este cambio, y ahora tengo curiosidad por saber si debería usarlo o no. Esto es algo que echaba mucho de menos en idiomas como ruby, donde puedes hacer, por ejemplo, a = b || c
obtener uno b
o c
más que un booleano 'real'. Sin embargo, la sintaxis que han elegido para el operador ternario me parece un poco contra intuitiva. ¿Debo usar esto en el código de producción? Definitivamente me arrojé cuando lo vi por accidente.