Como muchos de vosotros ya sabréis, han sido varias las novedades que PHP ha lanzado en su última actualización. Algunas de estas características tan interesantes guardan relación con soportes para enums, fiber, return never y mejoras del rendimiento, entre muchas otras. Por ello, vamos a explicar en detenimiento todas las novedades sobre PHP 8.1, desde sus funciones más innovadoras hasta los cambios más relevantes.
Novedades más interesantes de PHP 8.1
A medida que avanzan las actualizaciones, los desarrolladores pueden llegar a generar cierta expectación sobre las nuevas funcionalidades de PHP. En este caso, las novedades de PHP 8.1 han traído consigo ciertas capacidades que contribuyen a que los desarrolladores puedan escribir código de manera más precisa y optimizar el desarrollo web a medida.
Enums
Una de las principales novedades de PHP 8.1 es el soporte para enums. Esta es una de las funcionalidades más demandadas por la comunidad de programadores, la cual consiste en un tipo de datos que determina el desarrollador y que consta de un grupo de valores posibles.
La principal ventaja que aportan las enums es permitir que el código de la aplicación tenga una mejor legibilidad y, además, contribuye a evitar fallos en la aplicación.
Las enums más frecuentes en lenguajes de programación son las de tipo booleano, siendo true y false los valores asociados. Debido a esto, existen muchos lenguajes de programación en los que ya está integrado de manera predeterminada.
El uso de enums es vital para las situaciones en las que se necesita flexibilidad en el valor que puede tomar una variable, pero teniendo en cuenta que debe pertenecer a un conjunto preestablecido de casos posibles.
Pure enums
Vamos a reflejar con un ejemplo el funcionamiento de las pure enums. En este caso, procedemos a representar los palos de una baraja de cartas para comprender el proceso:
enum Suit { case Oros; case Copas; case Espadas; case Bastos; }
En el ejemplo anterior, la enum Suit refleja cuatro valores asignados que representan los palos de la baraja española: Oros, Copas, Espadas y Bastos. Por otro lado, la manera de acceder directamente a los valores es utilizar la siguiente sintaxis:
Suit::Oros , Suit::Copas , Suit::Espadas y Suit::Bastos.
Como ya sabemos, las enums se establecen sobre clases y objetos, por lo que actúan de manera muy parecida y poseen prácticamente los mismos requisitos.
Backed enums
Asimismo, las backed enums permiten asignar un valor escalar equivalente a cualquier caso. A pesar de ello, este tipo de enums únicamente pueden tener un tipo: int o string (nunca los dos).
enum Suit: string { case Oros = ‘O’; case Copas = ‘C’; case Espadas = ‘E’; case Bastos = ‘B’; }
Otro de los aspectos a tener en cuenta es que todos los casos diferentes de una backed enum deben contar con un valor único y no mezclarse con una pure enum.
Fiber
Fiber es una de las innovaciones de PHP 8.1 que más repercusión ha tenido hasta el momento. Hasta esta última actualización, PHP tan solo permitía escribir código síncrono, es decir, un tipo de código donde cada instrucción espera a la anterior para ejecutarse. Este proceso ha hecho que, históricamente, el proceso de ejecución del código sea más lento.
Si bien es cierto que existen soluciones de terceros que autorizan a los desarrolladores escribir código de forma asíncrona, tras esta nueva actualización, PHP incluye una nueva característica que permite escribir código asíncrono incorporado directamente en el lenguaje.
Así pues, el objetivo de la aparición de fibers no es otro que suprimir las diferencias entre funciones síncronas y asíncronas. La principal utilidad de fiber es desarrollar funciones PHP ininterrumpibles de pila completa de manera que, más adelante, se puedan utilizar para ejecutar la multitarea cooperativa en PHP.
Fibers son funcionalidades avanzadas que la gran parte de los desarrolladores comunes de PHP no aplicarán de forma directa. Esta función está orientada a autores de bibliotecas y marcos para asignar un bucle de eventos y una API de programación asincrónica.
Return never
Otra de las novedades de PHP 8.1 es return never. Cuando se aplique en funciones que se encuentren definidas dentro del marco de throw o exit, esta característica puede llegar a ser muy valiosa. Adicionalmente, las funciones never tienen el deber de respetar una serie de condiciones.
La declaración de return establecida de manera explícita es algo que no tendrían que contener las funciones de este tipo. De igual manera, tampoco deben poseer una declaración de return fijada de forma implícita. Finalmente, la tercera condición que las funciones never deben respetar es que siempre tienen que finalizar su ejecución con una declaración de exit.
Son muchas las similitudes que comparten el return never y el return void. Los dos se cercioran de que la función no arroje un valor, sin embargo, la diferencia principal es que el return never hace cumplir las reglas más estrictas.
De igual manera, never se clasifica como un tipo “inferior”. Por ello, los métodos que hayan sido definidos como never no podrán cambiar su return a otra cosa. Ahora bien, puede extender un método definido void con un método never declarado.
Mejoras de rendimiento de PHP 8.1
Conforme avanzan las actualizaciones de PHP, una de las mejoras que se mantienen en el tiempo son las mejoras en el rendimiento. Claro ejemplo de ello es la aplicación Symfony y su incremento del 23% en la velocidad en PHP 8.1 respecto a PHP 7.4. Además, en el framework Laravel se ejecuta un 21,5% más rápido en la versión 8.1 de PHP que en la 7.4.
Esto da respuesta a las nuevas soluciones tecnológicas integradas en PHP 8.1 y al gran volumen de modificaciones y ajustes respecto al rendimiento que se han desarrollado con el objetivo de optimizar los procesos.
En definitiva, son varias las novedades de PHP 8.1 que facilitan el trabajo a los desarrolladores, logrando convertir PHP en un lenguaje muy atractivo para el desarrollo de proyectos web, compitiendo cara a cara con otros lenguajes como Node.js en los que la sincronía y asíncrona es la base de todo el entorno.