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,
) {}
}
En la versión 8.2 se refactoriza de la siguiente manera:
readonly class User
{
public function __construct(
public string $name,
public string $email,
) {}
}
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';
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';
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:
Probamos nuestros ejemplos de esta publicación en el contenedor de Docker y este fue el resultado:
¿Y tu proyecto ya esta preparado para este cambio?
Top comments (0)