El operador ‘Elvis‘ lleva con nosotros desde hace mucho tiempo (creo que desde alguna versión 5.3) pero yo personalmente no lo he visto demasiado. Me parece que es uno de los grandes desconocidos en PHP.
En realidad es la versión comprimida del operador ternario que sí se usa mucho:
$a = 3;
echo ( $a>10 ? $a : 'Es menor que 10' ) . PHP_EOL; // El de toda la vida
En muchas ocasiones (no en el ejemplo anterior) la parte a la izquierda y a la derecha del interrogante son iguales. En tales casos podemos usar este operador:
$nombre = 'Homer Simpson';
echo 'Nombre: ' . ( $nombre ? $nombre : 'Señor X' ) . PHP_EOL;
En este ejemplo ambos operandos son iguales así que podemos prescindir del segundo:
echo 'Nombre: ' . ( $nombre ?: 'Señor X' ) . PHP_EOL;
Ojo, no confundir con el operador null coalesce. Elvis se usa solo cuando el valor es vacío o cero, en cambio el de coalesce es cuando el valor es nulo.
¿Por qué se llama operador elvis?
Pues simplemente por la tontería de que hay gente a la que le recuerda al icono de un Elvis con su tupé.