Hay un detalle con el operador ‘?’ con el que hay que tener cuidado. Es posible que alguna vez te hayas encontrado con este problema:
$nombre = 'Gorka';
echo "Nombre: " . isset($nombre) ? $nombre : '' . " es mi nombre.\n";
Posiblemente esperarás que se muestre:
Gorka es mi nombre.
Pero en realidad se muestra:
Gorka
Esto se debe a que la última cadena pasa a formar parte de la expresión a ejecturar si la condición no se cumple (lo que va después de ‘:’). Para evitar este problema basta con añadir un paréntesis:
$nombre = 'Gorka';
echo "Mensaje: " . ( isset($nombre) ? $nombre : '' ) . " es mi nombre.\n";
y así ya sale bien:
Mensaje: Gorka es mi nombre.
Lo sé, es una tontería, pero ¡la de tiempo que se pierde a veces con estas bobadas hasta que te das cuenta!