PHP 8.2: Novedades para tu programación

por David Abad
PHP8.2: Novedades

A finales de 2022 se publicó PHP 8.2 que trae novedades como clases de solo lectura, nuevos tipos de dato, tipos DNF y algunas funciones deprecadas.

En este artículo, repasamos las novedades más destacadas de PHP 8.2 que pueden mejorar nuestra programación en este lenguaje.

Clases de solo lectura

En PHP 8.2 se permite definir clases de solo lectura (readonly). En versiones anteriores ya se introdujo la posibilidad de definir variables readonly. Con esta nueva actualización podremos definir una clase entera como “solo lectura”, haciendo que todas sus variables pasen a ser de solo lectura.

PHP < 8.2
class Data
{
    public readonly string $title;

    public readonly string $description;
}
PHP 8.2
readonly class Data
{
    public string $title;

    public string $description;
}

Tipo de datos en formato disyuntivo (DNF)

En PHP 8.2 se introduce la posibilidad de utilizar operadores de unión ( | ) y de intersección ( & ) a la hora de definir el tipo de los datos de entrada/salida de las funciones:

PHP < 8.2
public function setData(mixed $data)
{
    if (($data instanceof A && $data instanceof B) || ($entity instanceof C)) {
        [...]
    }
}
PHP 8.2
public function setData((A&B)|C $data)
{
    [...]
}

Nuevos tipos de dato (true, false, null)

En PHP 8.2 se incluyen los valores true, false y null como nuevos tipos de dato. De modo que estos tipos pueden definirse explícitamente, por ejemplo, al indicar el tipo de salida de las funciones.

PHP < 8.2
class Data
{
    public function alwaysTrue(): bool
    {
        [...]
    }
    
    public function alwaysFalse(): bool
    {
        [...]
    }
}
PHP 8.2
class Data
{
    public function alwaysTrue(): true
    {
        [...]
    }
    
    public function alwaysFalse(): false
    {
        [...]
    }
}

Constantes en traits

Los traits en PHP son estructuras que engloban código que puede reutilizarse desde diferentes clases. En PHP 8.2 se amplían estos traits, permitiendo definir constantes dentro de su estructura:

trait Foo
{
    public const CONSTANT = 1;
}

class Bar
{
    use Foo;
}

var_dump(Bar::CONSTANT); // 1
var_dump(Foo::CONSTANT); // Error

Parámetros sensibles

PHP 8.2 permite definir los parámetros que contienen información sensible, de modo que su valor no pueda visualizarse en herramientas de debug o similares.

public function login(
    string $email,
    #[\SensitiveParameter] string $password
) {
    [...]
}

Nuevas funciones MySQL

PHP 8.2 incluye nuevas funciones para facilitar la ejecución de consultas en bases de datos MySQL. Se incorpora la función mysqli_execute_query($sql, $params) que permite la ejecución de consultas SQL parametrizadas:

foreach ($db->execute_query(
    'SELECT * FROM user WHERE name LIKE ? AND password LIKE ?', [$name, $password]
) as $user) {
    [...]
}

Otros cambios

  • Mejoras en la extensión Random para la generación de números aleatorios.
  • Deprecado el uso de propiedades dinámicas (excepto en stdClass).
  • Deprecada la interpolación de variables en strings mediante el uso de ${…}.
  • Deprecadas las funciones utf8_encode y utf8_decode.
  • Deprecado parcialmente el uso de la función call_user_func para la ejecución de funciones.
  • Deprecado parcialmente el uso de mbstring para algunas codificaciones.

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos