Se ha lanzado PHP 8.4: qué ha cambiado y por qué es importante
La comunidad de desarrolladores ha recibido el esperado lanzamiento de PHP 8.4, una nueva versión principal de uno de los lenguajes de programación web más populares. La actualización trae una serie de mejoras significativas, incluyendo los tan esperados property hooks, la visibilidad asimétrica y una optimización sustancial del rendimiento. Analicemos los cambios clave que todo desarrollador PHP debería conocer.
1. Property Hooks (Ganchos de propiedades)
La novedad más destacada es la posibilidad de definir getters y setters directamente en la declaración de la propiedad de una clase sin necesidad de escribir métodos separados. Esto simplifica radicalmente el trabajo con campos calculados o que requieren validación.
class User{ public string $name { set => $this->name = trim($value); get => ucfirst($this->name); }}Antes, para esta lógica era necesario escribir métodos separados getName() y setName(). Los property hooks hacen que el código sea más limpio y legible.
2. Visibilidad asimétrica
Ahora es posible establecer diferentes niveles de acceso para la lectura y escritura de una propiedad. Por ejemplo, lectura pública pero escritura protegida:
class Post{ public private(set) string $title;}Esto elimina la necesidad de crear getters y setters solo para controlar el acceso, manteniendo la encapsulación.
3. JIT mejorado y rendimiento
En PHP 8.4, el compilador JIT (Just-In-Time) ha sido significativamente rediseñado. Los desarrolladores del núcleo mejoraron la heurística de decisión de compilación y redujeron la sobrecarga en la ejecución de rutas de código calientes. Según pruebas preliminares, el aumento de rendimiento en benchmarks sintéticos oscila entre el 10% y el 25% en comparación con PHP 8.3.
- Aceleración en la ejecución de bucles y funciones recursivas
- Mejor manejo de arrays grandes
- Reducción del consumo de memoria en modo JIT de hasta un 15%
4. Nueva sintaxis: desestructuración de arrays con tipos
Se ha añadido la posibilidad de especificar tipos al desestructurar arrays:
[$name, $age] = ['Juan', 30]; // era[ string $name, int $age ] = ['Juan', 30]; // ahoraEsto mejora el análisis estático y hace que el código sea autodocumentado.
5. Cambios en la biblioteca estándar
- Nuevas funciones:
array_find(),array_find_key(),array_any()yarray_all()— para un trabajo más conciso con arrays. - Actualización de PCRE2: la biblioteca de expresiones regulares se ha actualizado a la versión 10.44, corrigiendo varios errores poco comunes.
- Funciones obsoletas: se han declarado obsoletas
session_set_cookie_params()(en favor deini_set()) y varias funciones internas.
6. Estado de obsolescencia (Deprecations)
En PHP 8.4 se han marcado como obsoletas:
- Cambiar el tipo de valor de retorno mediante
#[\\ReturnTypeWillChange]— ahora se requiere una declaración explícita. - Llamar a
isset()en no-arrays (por ejemplo