DEV Community

Chris López
Chris López

Posted on

PHP 8.2 Liberación Nov. 2022

Para noviembre 24, se libera la nueva versión de PHP 8.2, la cual traerá nuevas características que mejoran mucho el lenguaje y lo harán mas robusto.

Puedes ver el estatus de este release en este link: https://wiki.php.net/todo/php82

También puedes revisar el timelapse de las versiones de PHP en este link: https://www.php.net/supported-versions.php

A continuación, se describen algunas de las características mas importantes de la versión.

Readonly classes

Esta característica introducida en la versión 8.1, hace que las propiedades de nuestra clase sean de solo lectura, evitando la sobreescritura de los valores asignados a nuestras propiedades, eso se usa con bastante frecuencia en las clases DTO.

Esta característica en la versión 8.1 se define de la siguiente manera:

class User
{
    public function __construct(
        public readonly string $name, 
        public readonly string $email,
    ) {}
}
Enter fullscreen mode Exit fullscreen mode

En la versión 8.2 se refactoriza de la siguiente manera:

readonly class User
{
    public function __construct(
        public string $name, 
        public string $email,
    ) {}
}
Enter fullscreen mode Exit fullscreen mode

Propiedades dinámicas de las clases deprecadas

Otra característica importante de la versión 8.2, es que ya no podríamos crear propiedades dinámicas, al menos te generaría un "Warning Deprecated".

En versiones futuras este "Warning Deprecated", se convertiría en error. Hasta el momento podemos realizar lo siguiente:

class User 
{
   public string $name;
}


$user = new User();
$user->last_name = 'Jhon Snow';
Enter fullscreen mode Exit fullscreen mode

Con la versión 8.2, si hacemos lo anterior arrojaría un warning, salvo que en nuestra clase usemos los "Magic Methods" "get" y "set", ejemplo;

class User
{
    private array $properties = [];

    public function __set(string $name, mixed $value): void
    {
        $this->properties[$name] = $value;
    }
}

// …

$user->last_name = 'Bruce Wayne';
Enter fullscreen mode Exit fullscreen mode

Probando la versión 8.2 en Docker

Si quieres probar las características de la nueva versión, el contenedor de PHP 8.2 se encuentra ya disponible en el Docker Hub, con esto ya no tendrás que instalar esta versión en tu equipo para hacer pruebas, puedes consultarlo en el siguiente link:

https://hub.docker.com/_/php/tags

Probamos nuestros ejemplos de esta publicación en el contenedor de Docker y este fue el resultado:

Read Only Classes

Deprecated Dynamic Properties 1

Deprecated Dynamic Properties 1

¿Y tu proyecto ya esta preparado para este cambio?

Top comments (0)