Nuevo PHP 8.5

¡Nuevo PHP 8.5! Disfrútalo en dinahosting

|

Tiempo de lectura: 3 minutos

Actualizado el miércoles, 26 noviembre, 2025

Como cada año, hemos incorporado la nueva versión del lenguaje PHP en nuestros servidores para que puedas habilitarla en tus hostings si así lo deseas. ¡Repasamos todo lo nuevo que trae PHP 8.5!

Novedades de PHP 8.5

PHP 8.5 se define como “más inteligente, limpio y rápido”, es decir, que destaca por sus mejoras en optimización y depuración, adoptando opciones actualizadas para el manejo de datos.

Vemos en detalle sus principales características:

Extensión URI

Se añade una extensión nativa llamada URI para trabajar con URIs y URL de forma más robusta.

Ejemplo de uso de URI en PHP 8.5:

use Uri\Rfc3986\Uri;

$uri = new Uri('https://ejemplo.com/blog/post/10');

var_dump($uri->getPath());
// string(15) "/blog/post/10"

Nueva opción clone ()

PHP 8.5 ahora permite actualizar propiedades durante la clonación de objetos, pudiendo pasar de un array asociativo a la función clone(), lo que simplifica las clases readonly.

readonly class Point
{
    public function __construct(
        public float $x,
        public float $y,
        public float $z,
    ) {}

    public function move(float $dx, float $dy, float $dz): self
    {
        return clone($this, [
            'x' => $this->x + $dx,
            'y' => $this->y + $dy,
            'z' => $this->z + $dz,
        ]);
    }
}

$origin = new Point(0, 0, 0);
$moved  = $origin->move(2.5, -1, 3);

var_dump($moved);
// Point { x: 2.5, y: -1, z: 3 }

Operator pipe (operador de canalización)

El operator pipe, o |>, permite encadenar llamadas a funciones sin tener que añadir variables intermedias.

Esto permite reemplazar muchas llamadas anidadas con una cadena que se puede leer hacia adelante, en lugar de hacerlo de adentro hacia afuera, simplificando mucho la sintaxis.

Aquí un ejemplo de uso:

$input = " Hello World: PHP 8.5! ";

$clean = $input
    |> trim(...)
    |> (fn($s) => preg_replace('/[^a-zA-Z0-9\s]/', '', $s))
    |> (fn($s) => preg_replace('/\s+/', '_', $s))
    |> strtolower(...);

var_dump($clean);
// string(17) "hello_world_php_85"

Soporte para Closures y Callables

Se añade soporte para Closures y callables de primera clase en expresiones constantes. Esto incluye parámetros de atributos, valores predeterminados de propiedades y parámetros, y constantes.

final class CommentsController
{
    #[AccessControl(static function (
        Request $request,
        Comment $comment,
    ): bool {
        return $request->user->isAdmin() || $request->user === $comment->getAuthor();
    })]
    public function delete(
        Request $request,
        Comment $comment,
    ): Response {
        // Lógica para eliminar comentario
    }
}

Atributo #[\NoDiscard]

Al agregar el atributo #[\NoDiscard] a una función, se verificará si el valor devuelto se consume y emitirá una advertencia si no lo es. Esto permite mejorar la seguridad de APIs donde el valor devuelto es importante, pero se podría olvidar usar el valor de retorno por accidente.

El cast (void) puede usarse para indicar que un valor no se usa intencionalmente.

#[\NoDiscard]
function calculateSum(int $a, int $b): int
{
    return $a + $b;
}

calculateSum(3, 4);
// Warning: The return value of function calculateSum() should
// be used or explicitly ignored with (void)

Handles cURL persistentes compartidos

Los handles creados a partir de curl_share_init_persistent() no se eliminarán al final de las peticiones PHP. Si hay un handle persistente que comparte las mismas opciones, se reutilizará, evitando así el costo de crear nuevamente handles cURL.

Funciones array_first() y array_last()

Mediante array_first() y array_last() ahora puedes obtener el primer o el último valor de un array. Si el array está vacío, devolverá null, lo que agiliza la usabilidad.

Otras mejoras de PHP 8.5

  • Se incluye un backtrace en los errores fatales (ej. tiempo máximo de ejecución excedido)
  • Los atributos pueden apuntar a constantes.
  • [\Override] puede usarse también en propiedades.
  • [\Deprecated] es válido en traits y constantes.
  • Las propiedades estáticas permiten visibilidad asimétrica.
  • Las propiedades pueden marcarse como final mediante promoción en el constructor.
  • Se añade Closure::getCurrent() para simplificar la recursión en funciones sin nombre.
  • setcookie() y setrawcookie() soportan la opción partitioned.
  • Nuevas funciones: get_error_handler() y get_exception_handler().
  • Nuevos métodos DOM: getElementsByClassName() e insertAdjacentHTML().
  • Nueva función grapheme_levenshtein().
  • Nuevo atributo #[\DelayedTargetValidation] para suprimir errores de validación temprana de atributos.

Además, de todas estas mejoras, se han realizado más de 50 deprecaciones y cambios por compatibilidades.

Te dejamos aquí el enlace a la documentación de PHP 8.5, por si quieres saber más sobre todas las actualizaciones que incluye la nueva versión.

Y aquí te dejamos los enlaces a las anteriores versiones: PHP 8.4 y PHP 8.3.

¿Cómo activo PHP 8.5 en mi hosting?

¡Es my sencillo! Desde tu Panel, accede a  Hosting > Servidor > PHP > Versión PHP y elige la opción de PHP 8.5 en el selector. Y si prefieres otra versión, selecciona la que prefieras desde el mismo apartado.

Recuerda que PHP es uno los lenguajes más utilizados en diseño web. WordPress, por ejemplo, lo usa de base, por eso es importante que lo mantengas al día para que tu CMS funcione sin problemas.

¿A qué esperas? ¡Prueba ahora PHP 8.5 en dinahosting! 🙂


Avatar de Marta Mariño

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Newsletter

Suscríbete y recibe periódicamente consejos muy útiles para tu web y ecommerce 🙂 Además, te regalamos
4 guías
: Digitalización, WordPress, Ciberseguridad e IA.

Conviértete en afiliado

Gana dinero recomendando dinahosting a todo el mundo.