Lanzado oficialmente el 26 de noviembre de 2020, PHP 8 representa una actualización importante del lenguaje PHP. Esta nueva versión trae consigo una serie de optimizaciones y características poderosas, marcando un paso significativo en la evolución del lenguaje y prometiendo mejoras en la escritura de código y la construcción de aplicaciones más robustas. En este articulo de Cursos Para Programar exploramos qué es PHP 8.
JIT (Just In Time Compiler)
Una de las adiciones más aclamadas en PHP 8 es el compilador Just-in-time (JIT). Implementado como una parte casi independiente de OPcache, JIT almacena el código nativo de los archivos PHP en una región adicional de la memoria compartida de OPcache. Esto significa que los opcodes de PHP se traducen directamente a código máquina, lo que puede traer mejoras significativas en el rendimiento y el uso de la memoria.
Extensión OPcache PHP 8
PHP es un lenguaje interpretado, lo que implica que cada vez que se ejecuta un script PHP, el intérprete debe analizar, compilar y ejecutar el código. OPcache mejora el rendimiento de PHP almacenando el bytecode precompilado de los scripts en la memoria compartida, lo que elimina la necesidad de cargar y analizar los scripts en cada solicitud.
Características y Mejoras Principales de PHP 8
- Argumentos Nombrados: En PHP 8, puedes especificar solo los parámetros requeridos, omitiendo los opcionales. Los argumentos son independientes del orden y auto-documentados【86†source】.
- Atributos: A diferencia de las anotaciones PHPDoc, PHP 8 permite el uso de metadatos estructurados con la sintaxis nativa de PHP.
- Promoción de Propiedades del Constructor: Esta característica permite una sintaxis más concisa y menos redundante para la declaración de propiedades.
- Tipos de Unión 2.0: PHP 8 admite declaraciones de tipos de unión, que son validadas en tiempo de ejecución, a diferencia de las anotaciones PHPDoc para combinaciones de tipos.
Otras características
- Expresión Match: Similar a
switch
, pero con comparaciones estrictas y soportando solo expresiones de una línea sin necesidad de unbreak
. - Operador Nullsafe: Permite una cadena de llamadas con el nuevo operador nullsafe. Si la evaluación de un elemento en la cadena falla, toda la cadena se evalúa como null.
- Comparaciones más Lógicas entre Cadenas y Números: PHP 8 utiliza comparaciones de números cuando se compara con una cadena numérica. De lo contrario, convierte el número a una cadena y utiliza una comparación de cadenas.
- Errores de Tipo Consistentes para Funciones Internas: La mayoría de las funciones internas ahora lanzan una excepción de Error si falla la validación de los parámetros.
Mejoras en el Sistema de Tipos y Manejo de Errores
Esta versión introduce mejoras como controles de tipos más estrictos para operadores aritméticos/bitwise, validación de métodos abstractos en traits, corrección en las firmas de métodos mágicos, reclasificación de advertencias del motor y errores fatales para firmas de métodos incompatibles.
Otros Ajustes de Sintaxis y Mejoras de PHP 8
La versión incluye mejoras como permitir una coma final en las listas de parámetros y en las listas de uso de closures, capturas no capturadoras en excepciones, ajustes en la sintaxis de variables, tratar nombres de espacios de nombres como un único token y permitir ::class
en objetos.
Nuevas Clases, Interfaces y Funciones
Esta versión introduce clases como Weak Map, interfaces como Stringable y nuevas funciones como str_contains()
, str_starts_with()
, str_ends_with()
, fdiv()
, get_debug_type()
, get_resource_id()
, implementación del objeto token_get_all()
y nuevas APIs para la manipulación y recorrido del DOM】.
Resumen
En resumen, PHP 8 no solo mejora el rendimiento y la eficiencia del lenguaje sino que también introduce cambios significativos en la sintaxis y características que facilitan la escritura de código más limpio, robusto y mantenible. Con estas adiciones y mejoras, PHP 8 se perfila como una actualización crucial para los desarrolladores de PHP, ofreciendo una plataforma más poderosa y flexible para el desarrollo web moderno.