Un repaso a la evolución reciente de PHP
PHP se ha consolidado como el lenguaje de referencia para el desarrollo web backend, impulsando millones de sitios y aplicaciones en todo el mundo. Cada nueva versión aporta mejoras significativas en rendimiento, sintaxis y seguridad. Desde PHP 8.0 —que supuso una revolución con el motor JIT, los tipos de unión y los atributos— hasta PHP 8.4, la evolución ha sido constante y pensada para facilitar la vida al desarrollador, aumentar la seguridad y mantener la relevancia del ecosistema.
Principales hitos recientes:
- PHP 8.0 (2020): Motor JIT, atributos, tipos de unión, mejoras en match, throw como expresión.
 - PHP 8.1 (2021): Enumeraciones (enum), propiedades readonly, Fibers para concurrencia, mejoras en rendimiento.
 - PHP 8.2 (2022): Tipos de lectura-only, constantes readonly, desprecación de dynamic properties, true types.
 - PHP 8.3 (2023): Tipos para constantes de clase, mejoras en la herencia, nuevas funciones array, rendimiento optimizado.
 - PHP 8.4 (2024): El enfoque se centra en facilitar aún más el código limpio, la claridad semántica y la seguridad, con nuevas capacidades para trabajar con propiedades, visibilidad, manejo de datos y la API DOM.
 
¿Qué novedades aporta PHP 8.4?
Hooks para propiedades: getters y setters elegantes y nativos
Uno de los avances más notables de PHP 8.4 es la incorporación de hooks para propiedades. Ahora es posible definir lógica personalizada cuando se lee o escribe una propiedad, directamente en la declaración, sin necesidad de implementar manualmente los clásicos métodos getX o setX. Esto mejora la legibilidad, reduce errores y facilita la integración con IDEs y herramientas de análisis.
Ejemplo antes (PHP <= 8.3):
class Locale {
    private string $codigoPais;
    public function setCodigoPais(string $codigoPais): void {
        $this->codigoPais = strtoupper($codigoPais);
    }
    // ...getter...
}
Ejemplo con PHP 8.4:
class Locale {
    public string $codigoPais {
        set (string $codigoPais) {
            $this->codigoPais = strtoupper($codigoPais);
        }
    }
}
Esto permite, además, implementar propiedades calculadas (computed properties) y controlar la asignación de valores de manera más segura.
Visibilidad asimétrica: control granular de lectura y escritura
PHP 8.4 introduce la posibilidad de definir alcances distintos para lectura y escritura en una propiedad pública. Es decir, una propiedad puede ser pública para lectura pero privada para escritura, evitando la necesidad de escribir métodos repetitivos y mejorando la encapsulación.
class Version {
    public private(set) string $version = '8.4';
}
Ahora, cualquier parte del código puede leer $version, pero solo métodos internos pueden modificarlo.
Nueva API DOM y soporte HTML5 completo
La nueva API DOM basada en el espacio de nombres Dom y la clase HTMLDocument permite trabajar con documentos HTML5 de forma más fiable y estándar, corrigiendo viejos errores y mejorando la interoperabilidad.
$dom = Dom\HTMLDocument::createFromString('<main><article>Ejemplo</article></main>');
$node = $dom->querySelector('main > article:last-child');
Deprecaciones y marcado nativo de métodos obsoletos
Ahora es posible usar el atributo #[\Deprecated] para señalar métodos, funciones y constantes de clase que se consideran obsoletos, generando advertencias automáticas y ayudando en la transición del código heredado.
class MyClass {
    #[\Deprecated(message: "Usa getVersion en su lugar", since: "8.4")]
    public function getOldVersion() { /* ... */ }
}
Mejoras en BCMath y manejo de precisión arbitraria
PHP 8.4 incorpora la clase BcMath\Number, permitiendo operaciones matemáticas de alta precisión con una sintaxis más intuitiva y orientada a objetos.
use BcMath\Number;
$num1 = new Number('0.12345');
$num2 = new Number('2');
$result = $num1 + $num2; // '2.12345'
Nuevas funciones de arrays
Se incorporan utilidades como array_find, array_find_key, array_any y array_all, acercando el manejo de arrays en PHP a lo que ofrecen otros lenguajes modernos.
$animal = array_find(['perro', 'gato', 'vaca'], fn($v) => str_starts_with($v, 'g')); // 'gato'
Más cambios destacados
- Subclases específicas para PDO: Mejor tipado y métodos más claros para cada base de datos.
 - Acceso directo a métodos tras instanciar (
new MyClass()->method()sin paréntesis adicionales). - Nueva implementación JIT más eficiente.
 - Nuevas funciones de manipulación de cadenas multibyte (mb_trim, mb_ucfirst, etc.).
 - API de objetos Lazy, mejoras en DateTime, Reflection, y más.
 
Comparativa rápida: PHP 8.4 vs versiones anteriores
| Característica | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 | 
|---|---|---|---|---|---|
| Motor JIT | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ Mejorado | 
| Enum | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | 
| Readonly properties | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | 
| Hooks propiedades | ❌ | ❌ | ❌ | ❌ | ✔️ Novedad | 
| Visibilidad asimétrica | ❌ | ❌ | ❌ | ❌ | ✔️ Novedad | 
| API DOM HTML5 | ❌ | ❌ | ❌ | ❌ | ✔️ Novedad | 
| Atributo #[\Deprecated] | ❌ | ❌ | ❌ | ❌ | ✔️ Novedad | 
| Nuevas array_*() | ❌ | ❌ | ❌ | ✔️ | ✔️ Mejoradas | 
| BCMath orientado objetos | ❌ | ❌ | ❌ | ❌ | ✔️ Novedad | 
| Compatibilidad backward | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (con deprecaciones) | 
¿Por qué actualizar a PHP 8.4?
- Código más limpio y mantenible gracias a los hooks y la visibilidad asimétrica.
 - Mayor seguridad con controles de acceso y nuevas funciones de auditoría.
 - Mejor rendimiento gracias a optimizaciones en JIT y nuevas funciones nativas.
 - Mayor compatibilidad y soporte para estándares modernos en HTML5, arrays y precisión numérica.
 - Facilidad para el desarrollador con menos boilerplate, más claridad en errores y advertencias automáticas sobre obsolescencia.
 
Conclusión
PHP 8.4 consolida la madurez del lenguaje, facilitando la escritura de código más limpio, robusto y seguro. La actualización resulta especialmente atractiva para proyectos nuevos y existentes que busquen aprovechar las últimas tendencias en desarrollo web, mejorar su rendimiento y facilitar la evolución de su base de código.
La recomendación para equipos técnicos y desarrolladores es clara: si tu stack lo permite, da el salto a PHP 8.4 y aprovecha su nueva arquitectura y funcionalidades avanzadas.