Articulos Podcast Cartas del editor
Conoce PHP 8.1 la última actualización de PHP

Conoce PHP 8.1 la última actualización de PHP

07 Dec, 2021 | 0

PHP 8.1 es la última actualización de PHP que ha sido lanzada el 25 de noviembre de 2021. PHP 8.1 es otro paso que ha dado PHP. Las tecnologías están en constante cambio y ellos no se quedan atrás. 

Los administradores de la versión de PHP 8.1 son Joe Watkins, Ben Ramsey y Patrick Allaert, quienes irán sacando las versiones menores de la serie PHP 8.1 hasta que PHP 8.1 alcance su fin de vida a finales de 2024.

Algunos de los aspectos más destacados de PHP 8.1 incluyen el soporte para Enums, Fibers, tipos de no retorno, Tipos de Intersección, propiedades de sólo lectura, y sintaxis de llamada de primera clase. También deja de lado un puñado de características, lo que podría añadir algo de fricción al actualizar aplicaciones PHP heredadas a PHP 8.1.

Veamos algunas de sus nuevas y más destacadas características:

Enums

PHP 8.1 añade soporte para Enumeraciones. Una Enumeración, o Enum para abreviar, es un tipo enumerado que tiene un número fijo de valores posibles.

En contraste con el uso de cadenas o números especiales internamente (es decir, números mágicos) para almacenar y trabajar con parámetros, los Enums hacen que el código de la aplicación sea más legible, y evite errores en la aplicación.

 

Fiber

Los Fibers son una nueva característica en PHP 8.1 que trae una concurrencia ligera y controlada a PHP.

En esencia, un Fiber es un bloque de código que mantiene su propio stack (variables y estado), que puede ser iniciado, suspendido o terminado cooperativamente por el código principal y el fiber.

Los Fibers son similares a los hilos virtuales en un programa de ordenador. Los hilos son programados por el sistema operativo, y no garantiza cuándo y en qué momento los hilos son pausados y reanudados. Los fibers son creados, iniciados, suspendidos y terminados por el propio programa, y permite un control fino de la ejecución del programa principal y de la ejecución del fiber.

Con los Fibers, el bloque de código dentro del Fiber puede suspender el bloque de código y devolver cualquier dato al programa principal. El programa principal puede reanudar el Fiber desde el punto en que fue suspendido.

 

Nuevas propiedad de Readonly 

PHP 8.1 trae soporte para propiedades de clase de sólo lectura. Una propiedad de clase declarada de sólo lectura sólo puede ser inicializada una vez, y no se permiten más cambios en la propiedad.

Las propiedades de clase de sólo lectura se declaran con la palabra clave sensible al contexto [readonly] en una propiedad tipada.

 

Tipos de Intersección puros

PHP 8.1 soporta Tipos de Intersección, lo que permite declarar un tipo para un parámetro, propiedad, o tipos de retorno y obligar a que los valores pertenezcan a todos los tipos de clase/interfaz declarados. Esto es lo opuesto a los Tipos de Unión, que permiten cualquiera de los tipos declarados. La implementación de PHP 8.1 de los Tipos de Intersección se denomina Tipos de Intersección "puros" porque la combinación de Tipos de Unión y Tipos de Intersección en la misma declaración no está permitida.

Los Tipos de Intersección se declaran combinando los nombres de las clases/interfaces con un signo &.

Para un ejemplo de uso, considere las interfaces incorporadas Iterator y Countable de PHP. La interfaz Iterator hace posible iterar el objeto de la clase usando foreach. Sin embargo, a menos que la misma clase implemente la interfaz Countable, no es posible llamar a la función count() en dichos objetos.

 

Tipo de devolución ‘never’

‘Never’ es un nuevo tipo de retorno añadido en PHP 8.1.

Una función/método que se declara con el tipo de retorno never y que indica que nunca devolverá un valor, y siempre lanza una excepción o termina con una llamada die/exit.

El tipo de retorno ‘never' es similar al tipo de retorno ‘void’ existente, pero el tipo ‘never’ garantiza que el programa terminará o se lanzará. En otras palabras, una función/método declarado ‘never’ no debe llamar a ‘return’ en absoluto, ni siquiera en la forma return;.

 

Constante ‘Final’

Las constantes declaradas en las clases de PHP pueden ser anuladas por las subclases. Antes de PHP 8.1, la constante ‘final' no estaba permitida en las constantes de clase. Intentar usar la bandera final en las constantes de clase resultaba en un error fatal.

En PHP 8.1 y posteriores actualizaciones el ‘final’ está permitido en las constantes de clase/interfaz, y ninguna de las subclases puede extender/sobrescribir las constantes finales.

 

Nueva función fsync

PHP 8.1 añade las funciones fsync y fdatasync para forzar la sincronización de los cambios en los archivos al disco y asegurar que los buffers de escritura del sistema operativo han sido vaciados antes de regresar.

Dado que la sincronización del disco es una operación del sistema de archivos, la función fsync sólo funcionará en flujos de archivos simples. El intento de sincronizar flujos que no sean de archivos emitirá una advertencia.

 

Restringir el uso de $GLOBALS 

$GLOBALS es una variable especial en PHP que hace referencia a todas las variables en el ámbito global. $GLOBALS es un array asociativo, en el que las claves del array son el nombre de la variable global, y la clave del array es la variable global. $GLOBALS contiene todas las variables globales, así como otros valores superglobales como $_SERVER, $_GET, $_ENV, etc. donde sea aplicable.

A partir de PHP 8,1 y posteriores, ciertos cambios en el array $GLOBALS arrojan errores fatales. En general, se permite modificar elementos individuales del array, pero no se permite hacer cambios masivos.

 

Nuevos algoritmos de Hashing

PHP 8.1 añade soporte para los algoritmos de hashing xxHash y MurMurHash3. Son algunos de los algoritmos de hashing más rápidos, y pueden procesar fácilmente los datos casi a la velocidad de un medio de almacenamiento. PHP es el primer lenguaje de programación que incluye estos dos algoritmos de hash en su biblioteca estándar.

  • Soporte del algoritmo hash MurmurHash3
  • Soporte de algoritmos hash xxHash
  • Puntos de referencia del algoritmo de hash
     

Notación numérica octal explícita

En PHP 8.1 y posteriores, los números octales también soportan el prefijo 0o (cero, seguido de la letra o), lo que significa que los literales numéricos octales pueden hacerse más obvios y legibles de que son efectivamente números octales. También se admite el 0O (cero, seguido de O mayúscula).

 

Dalai Belandria