Nuevos operadores en PHP 7

Con la nueva versión 7 de PHP han llegado algunas cosas que a simple vista pueden sonar raro y otras veces preguntarte pero esto que es. Han añadido exactamente dos operadores: ?? y <=>.

El operador ?? ha sido llamado en la web que describe las nuevas características de PHP 7 como “operador de fusión de null”, en C# se le puede conocer como operador de uso combinado de null, aunque supongo que todo dependerá de la traducción y la costumbre. En PHP puede ocurrir que tengas que comprobar el valor de una variable y que esta no exista, sobretodo con las $_GET y las $_POST, esto obliga a utilizar la función isset(), que comprueba si una variable existe y no es null, antes de hacer otras comprobaciones y usos. El operador ?? se puede utilizar como operador ternario junto con isset():

Con este operador nos ahorramos repetir dos veces la variable a comprobar, además del propio isset().

El otro operador añadido es <=>, el cuál ha sido bautizado como “el operador nave espacial”. Yo no apostaría porque se le quede este nombre para siempre, mejor platillo volante u ovni, a veces las traducciones dan resultados que aunque son teóricamente correctos después no acaban de quedar bien. A lo que iba, este operador sirve para comparar dos expresiones y devolver -1, 0 o 1 según sea la primera expresión menor, igual o mayor que la segunda expresión. Esto añade una excepción a los demás operadores típicos de comparación que siempre devolverán true o false:

Resumiendo, con los dos nuevos operadores se ha buscado simplificar el código y ahorrar caracteres, lo cuál puede venir muy bien en según que circunstancias. En mi opinión me parece que han acertado con ??, pero no con <=>. No me acaba de convencer ya que después de conseguir el resultado (-1, 0, 1) hay que añadir más if‘s y algún que otro elseswitch para tratarlo, a no ser que sólo se necesite detectar sólo una de las tres opciones. Si se quieren tratar las tres posibilidades habrá que escribir igual o más código.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *