🚀 ¡PHP 8.5 ya disponible!

El 20 de noviembre de 2025 marca la llegada de PHP 8.5, una versión centrada en mejorar la experiencia diaria de los desarrolladores con nuevas herramientas para escribir código más limpio, depurar con más facilidad y optimizar el rendimiento. Aunque no trae cambios drásticos en la sintaxis, sí introduce mejoras muy útiles que agilizan tareas comunes y elevan la calidad del código.

🚀 Principales novedades de PHP 8.5

Aquí un resumen de las funciones más destacadas:

1. Operador Pipe (|>)

  • PHP 8.5 introduce el operador |>, que permite encadenar funciones en una dirección de izquierda a derecha. Esto mejora la legibilidad frente a llamadas anidadas profundas.

2. clone() con modificación de propiedades (“clone with”)

  • Ahora es posible clonar objetos y, al mismo tiempo, modificar algunas propiedades gracias a una nueva sintaxis.

  • Esto es especialmente útil para clases readonly o patrones inmutables, ya que permite aplicar el llamado “with-er” pattern.

3. Atributo #[\NoDiscard]

  • Se introduce el atributo #[\NoDiscard], que emite una advertencia si no se usa el valor de retorno de una función marcada con él.

  • Esto ayuda a evitar errores sutiles cuando olvidamos manejar el resultado de llamadas importantes.

4. Expresiones constantes con closures y “first-class callables”

  • Ahora se pueden usar closures estáticas y callables de primera clase dentro de expresiones constantes, por ejemplo, como parámetros de atributos.

  • Esto abre posibilidades interesantes para metaprogramación y definición de configuraciones inmutables.

5. Nueva extensión URI

  • PHP 8.5 incluye una extensión URI integrada que permite analizar, normalizar y manipular URIs (URLs) de forma segura, siguiendo los estándares RFC 3986 y WHATWG URL.

  • Esta extensión se basa en bibliotecas externas, ofreciendo un API bastante robusto.

6. Nuevas funciones de array: array_first() y array_last()

  • array_first($arr): devuelve el primer valor del array, o null si está vacío.

  • array_last($arr): devuelve el último valor del array, o null si no hay elementos.

  • Estas funciones simplifican patrones comunes al trabajar con arrays, evitando hacks con reset() o end().

7. Nuevas mejoras en manejo de errores y depuración

  • Ahora los errores fatales pueden mostrar un backtrace, lo que ayuda muchísimo al depurar problemas críticos.

  • Nuevas funciones: get_error_handler() y get_exception_handler() permiten recuperar los manejadores configurados actualmente.

  • Se añade una opción fatal_error_backtraces para controlar esta funcionalidad.

8. Diagnóstico de configuración INI

  • El comando de CLI php --ini=diff muestra solo las directivas INI que han sido cambiadas respecto a los valores por defecto.

  • Muy útil para depurar entornos o averiguar qué configuraciones se han personalizado en producción.

9. Nuevas utilidades con cURL

  • Función curl_multi_get_handles() para obtener todos los handles que gestiona un CurlMultiHandle, facilitando el control de peticiones paralelas.

  • También hay soporte para handles persistentes de cURL que pueden reutilizarse entre peticiones PHP, reduciendo la sobrecarga.

10. Otras mejoras sintácticas y atributos

  • Se puede marcar propiedades como final usando la promoción de propiedades en el constructor.

  • Los atributos ahora pueden aplicarse a constantes.

  • Se introduce #[\DelayedTargetValidation] para evitar errores de compilación cuando atributos se usan sobre blancos “no válidos”.

  • También se añade Closure::getCurrent() para ayudar en recursión con funciones anónimas.

  • Se incluye la función grapheme_levenshtein() para comparar cadenas respetando clusters de grapemas (muy útil para cadenas multibyte).

  • Nuevos métodos en DOM: Dom\Element::getElementsByClassName() y insertAdjacentHTML().

  • setcookie() y setrawcookie() ahora soportan la opción “partitioned” para particionar cookies.

  • Constante PHP_BUILD_DATE con la fecha de compilación de PHP.

11. Internacionalización mejorada (“i18n”)

  • Nueva función locale_is_right_to_left() para detectar si un locale se lee de derecha a izquierda.

  • En la clase Locale (extensión intl), método isRightToLeft() para comprobar la dirección de escritura.

  • Se incorpora IntlListFormatter para formatear listas (como “A, B y C”) según las convenciones del idioma.

 

🧭 ¿Por qué es interesante actualizar a PHP 8.5?

  1. Mayor legibilidad: Con el operador pipe, el código se lee de manera más lineal y transparente.

  2. Menos boilerplate: Las mejoras en clone, propiedades, atributos y arrays hacen que escribir clases inmutables o manejar datos sea más sencillo.

  3. Depuración más potente: Los errores fatales con backtrace y la posibilidad de inspeccionar los manejadores actuales ayudan muchísimo a diagnosticar problemas.

  4. Configuración más clara: Saber qué valores de INI has cambiado facilita el mantenimiento y la auditoría de entornos.

  5. Rendimiento en red: Reutilizar conexiones cURL mejora la eficiencia.

  6. Soporte para internacionalización: Si trabajas con aplicaciones multilenguaje, las nuevas funciones de locale son un plus.


📚 Más información, haciendo click aquí.

✉️ Puedes contactarnos haciendo click aquí.

NOTA: Próximamente estará disponible en nuestros servidores. Actualizaremos este post cuando esté disponible.