Novedades en PHP 8.4

PHP 8.4 fue liberado el 21 de noviembre de 2024, vamos a ver algunas de las nuevas características que nos ofrecerá esta nueva versión de PHP.

PHP 8.4 marca un paso importante en la evolución del lenguaje, trayendo consigo una serie de características que mejoran tanto la productividad como el rendimiento. Entre las novedades más destacadas se encuentran los hooks para propiedades (property hooks), la visibilidad asimétrica (asymmetric visibility), una API DOM mejorada con soporte para HTML5, optimizaciones significativas de rendimiento y una limpieza general que refina el ecosistema. En esta entrada, exploraremos todo lo que PHP 8.4 tiene para ofrecer y cómo estas mejoras pueden beneficiar tus proyectos.

Hooks para Propiedades

Los property hooks son una novedad en PHP 8.4 e introducen un enfoque nativo y robusto para trabajar con propiedades calculadas. Ahora, podemos definir getters y setters directamente en las propiedades de nuestras clases, eliminando la necesidad de métodos explícitos o docblocks que pueden volverse inconsistentes con el tiempo.

Esta característica permite:

  • Preprocesar o postprocesar valores de manera confiable sin recurrir a métodos auxiliares.

  • Mejor compatibilidad con IDEs y herramientas de análisis estático, lo que facilita la comprensión y el mantenimiento del código.

Un ejemplo práctico para ilustrarlo:

Con los property hooks podemos hacer ese tipo de cosas. Esta funcionalidad mejora la legibilidad y reduce la necesidad de código repetitivo, lo que se traduce en aplicaciones más eficientes, fáciles de leer y de mantener.

Visibilidad asimétrica

Con PHP 8.4, podemos definir propiedades con visibilidad asimétrica, lo que permite establecer diferentes niveles de acceso para lectura y escritura. Esto elimina la necesidad de métodos innecesarios, como setters y getters manuales, al mismo tiempo que protege las propiedades contra modificaciones no deseadas desde fuera de la clase.

Al utilizar la visibilidad asimétrica, puedes permitir que una propiedad sea leída públicamente mientras restringes su modificación exclusivamente al ámbito interno de la clase.

Ejemplo: Controlando el acceso a un contador de visitas

Con esta característica, PHP 8.4 ofrece un control más intuitivo y flexible sobre las propiedades de nuestras clases.

Atributo #[\Deprecated]

Con PHP 8.4, el nuevo atributo #[\Deprecated] permite marcar funciones, métodos y constantes de clases como obsoletos de manera nativa. Esto elimina la necesidad de usar comentarios docblock para indicar que una funcionalidad está en desuso, haciéndolo más claro y formal dentro del lenguaje.

El atributo también permite incluir información adicional, como un mensaje que explique la alternativa recomendada y la versión en la que se introdujo la deprecación.

Ejemplo: Migrando nombres de métodos

Supongamos que queremos cambiar el nombre de un método en una clase para hacerlo más claro, pero queremos mantener el método antiguo con un aviso de deprecación mientras los desarrolladores actualizan sus implementaciones.

new MyClass()->method() sin paréntesis

PHP 8.4 introduce una mejora de sintaxis que permite acceder directamente a métodos y propiedades de un objeto recién instanciado sin necesidad de envolver la expresión new entre paréntesis. Esto simplifica el código, eliminando una fuente común de confusión y mejorando la legibilidad en situaciones donde necesitas llamar a métodos o acceder a propiedades inmediatamente después de crear un objeto.

Ejemplo: Creación y uso directo de un objeto

Antes de PHP 8.4, era necesario envolver el operador new en paréntesis para acceder directamente a un método o propiedad, ahora no:

Nuevas funciones array_*()

PHP 8.4 introduce cuatro nuevas funciones para trabajar con arrays: array_find(), array_find_key(), array_any() y array_all(). Estas funciones ofrecen una forma más declarativa y legible de realizar búsquedas y evaluaciones sobre arrays, simplificando tareas comunes.

1. array_find()

Busca y devuelve el primer valor que cumpla con una condición específica, o null si no se encuentra ningún valor.

Ejemplo: Encontrar el primer número par

2. array_find_key()

Busca y devuelve la clave del primer valor que cumpla con una condición específica, o null si no se encuentra ninguna clave.

Ejemplo: Encontrar la clave del primer número negativo

3. array_any()

Evalúa si algún valor en el array cumple con una condición. Devuelve true si al menos un valor cumple con la condición; de lo contrario, devuelve false.

Ejemplo: Verificar si hay números mayores que 50

4. array_all()

Evalúa si todos los valores en el array cumplen con una condición. Devuelve true si todos los valores cumplen con la condición; de lo contrario, devuelve false.

Ejemplo: Verificar si todos los números son positivos

Estas funciones mejoran notablemente la experiencia de trabajar con arrays en PHP, haciéndolo más declarativo y expresivo.

Nuevas clases de DOM con soporte para HTML5

PHP 8.4 introduce nuevas clases en la extensión DOM, como Dom\HTMLDocument, que proporcionan una manera más moderna, intuitiva y compatible con el estándar para trabajar con documentos HTML5. Estas nuevas clases no solo facilitan tareas como el web scraping o manipulación de documentos HTML, sino que también ofrecen una API más cercana a la que se usa en el navegador, haciendo que los desarrolladores se sientan en un entorno más familiar.

Antes de PHP 8.4: Sintaxis más compleja y menos moderna

Antes, el manejo de documentos HTML requería varias líneas de código adicionales para buscar elementos específicos y manipularlos.

Con PHP 8.4: Simplificación con Dom\HTMLDocument

Ahora podemos utilizar Dom\HTMLDocument para simplificar el análisis y la manipulación de documentos HTML, con soporte completo para selectores CSS y manejo directo de clases.

Ventajas del nuevo enfoque

  1. Compatibilidad con estándares: Las nuevas clases de DOM son completamente compatibles con HTML5, reduciendo problemas relacionados con estructuras modernas de documentos.

  2. Selectores CSS: Ya no es necesario usar XPath para localizar nodos; ahora puedes usar selectores CSS, que son más familiares y legibles.

  3. Manejo de clases mejorado: Con propiedades como classList, puedes trabajar directamente con las clases de un elemento, eliminando la necesidad de parsear manualmente el atributo class.

  4. Simplificación del código: Reduce significativamente la cantidad de líneas necesarias para lograr las mismas tareas.


Novedades en PHP 8.0

Novedades en PHP 8.1

Novedades en PHP 8.2

Novedades en PHP 8.3

Hasta aquí esta entrada revisando algunas de las más poderosas novedades de PHP 8.4, espero que te haya resultado útil, si quieres seguir conociendo todas las novedades de PHP 8 no te pierdas la ruta de PHP 8.

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Términos y condiciones para afiliados Formulario de contacto

Copyright 2025 © Todos los derechos reservados.

Contacto