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.
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.
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.
Con esta característica, PHP 8.4 ofrece un control más intuitivo y flexible sobre las propiedades de nuestras clases.
#[\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.
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éntesisPHP 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.
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:
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.
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.
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.
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
.
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
.
Estas funciones mejoran notablemente la experiencia de trabajar con arrays en PHP, haciéndolo más declarativo y expresivo.
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, el manejo de documentos HTML requería varias líneas de código adicionales para buscar elementos específicos y manipularlos.
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
Compatibilidad con estándares: Las nuevas clases de DOM son completamente compatibles con HTML5, reduciendo problemas relacionados con estructuras modernas de documentos.
Selectores CSS: Ya no es necesario usar XPath para localizar nodos; ahora puedes usar selectores CSS, que son más familiares y legibles.
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
.
Simplificación del código: Reduce significativamente la cantidad de líneas necesarias para lograr las mismas tareas.
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.