Novedades en PHP 8

Fecha de publicación: noviembre 28, 2020

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on google
Google+
Share on whatsapp
WhatsApp
Share on email
Email

PHP 8 fue liberado el 26 de noviembre de 2020 y trae una serie de mejoras que todos los desarrolladores vamos a agradecer, union types, named arguments, mixed y nullsafe entre otros. En esta entrada te los voy a tratar de explicar para que veas los grandes beneficios que añaden a PHP.

Novedades de PHP 8

JIT (Just In Time Compilation)

PHP es un lenguaje interpretado, no compilado como por ejemplo C o Java. Es el intérprete de PHP el que hace que nuestro código funcione.

En PHP 8 aparece por primera vez JIT, y es una gran noticia, la idea es ofrecernos la posibilidad de ejecutar código PHP en tiempo de ejecución, pero ahora mismo, por lo menos para el desarrollo de aplicaciones web, su rendimiento no es nada excepcional en comparación con el uso del intérprete.

Tendremos que ver si en un futuro no muy lejano JIT puede ser una poderosa herramienta para procesos que requieran usos de CPU elevados, ya que de momento las benchmarks no aportan nada valioso al desarrollo web.

La siguiente imagen pertenece a la documentación de PHP 8, ahí podemos ver que por ejemplo la afectación en WordPress es realmente mínima.

bench php

Union Types

En PHP 8 ya podemos utilizar Union Types, una característica muy poderosa de otros lenguajes de programación. La idea es poder utilizar múltiples tipos de datos para argumentos, datos de retorno y propiedades en lugar de poder utilizar únicamente un tipo de dato, veamos un ejemplo.

Como puedes ver, ahora en los argumentos del constructor de la clase FooBar aceptamos un dato que puede ser de tipo Foo o de tipo Bar, además, el retorno de datos puede ser de tipo string o int.

Promotion Construct Properties

Sin dudarlo esta es una gran característica, ya que nos va a permitir definir el ámbito de una propiedad a través de los argumentos del constructor para que automáticamente queden inicializadas en la clase, con el consiguiente ahorro de código.

En lugar de hacer lo siguiente:

En PHP 8 podremos hacer esto:

Named Arguments

Esta es otra poderosa característica de PHP 8 muy similar a la que Python nos ofrece a través de los keyword arguments. En PHP 8 ya podemos utilizar argumentos a través de sus nombres, incluso de forma desordenada y con valores nulos.

Atributos en lugar de PHPDoc

En PHP 7 y sus versiones anteriores para documentar cualquier tipo de dato utilizamos bloques de documentación PHP, los conocidos como PHPDoc. En PHP 8 aparecen atributos o metadatos estructurados con la sintaxis nativa de PHP.  Aquí tienes un paquete para Laravel de Spatie que justamente trata este tema aplicándolo al sistema de rutas.

Lo mejor para entender un caso de uso que puede aplicarse a la vida real es ver lo que hace Spatie con esta nueva característica de PHP 8.

El código anterior habrá registrado la siguiente ruta en nuestro proyecto Laravel.

 

Expresiones Match, ¿mejora del Switch?

El bloque switch en PHP lo solemos utilizar de vez en cuando para comprobar un valor a través de una serie de casuísticas. En PHP aparece la expresión match, las cuales no requieren de un break, pueden ser almacenadas en variables y utilizan la comparación de datos estricta, veamos un ejemplo.

Otro dato importante, PHP 8 también soporta una coma al final de una lista de parámetros y lista de use en closures.

Operador Nullsafe

Gracias al operador Nullsafe en PHP 8 no tendremos que andar comprobando condiciones nulas, simplemente deberemos utilizar este nuevo operador. Primero veamos un ejemplo con PHP 7.

En PHP 8 y gracias al operador Nullsafe podemos hacer simplemente lo siguiente.

Gracias al paso del ? en cada comprobación que necesitemos realizar PHP hará ese trabajo por nosotros, con el consiguiente ahorro de código.

Mixed

Mixed es un nuevo tipo de dato en PHP 8 algo peligroso, digo peligroso porque si se le da mal uso puede convertirse en algo malo. El problema de mixed es que nos permite definir un tipo de dato que puede contener cualquiera de los siguientes tipos: array, bool, callable, int, float, null, object, resource, string.

Si tienes experiencia programando sabrás que si a eso se le da mal uso el resultado será una aplicación que no conoce el tipo de dato que recibe con los consiguientes inconvenientes, veamos un ejemplo rápido de uso.

Hasta aquí esta entrada revisando algunas de las más poderosas novedades de PHP 8, espero que te haya resultado útil, si quieres seguir conociendo todas las novedades de PHP 8 no dejes de revisar la documentación de la liberación de PHP 8.

¿Quieres acceder a más de 100 cursos de PHP y JavaScript?

Vuejs, Laravel, NodeJS, WordPress, Serverless, React Native, Amazon Web Services y mucho más

Quiero hacerme Premium
Cursosdesarrolloweb ©. Todos los derechos reservados.

Login

Create an Account Back to login/register