Lanzamiento oficial de PHP 8.3.0

El equipo de desarrollo de PHP anuncia la disponibilidad inmediata de PHP 8.3.0.

Esta versión trae una serie de nuevas características y mejoras de rendimiento. Aquí hay un resumen de las novedades más destacadas.

Constantes de clase tipadas

Ahora es posible definir constantes de clase tipadas.

PHP < 8.3

interface I {
    // Podemos suponer que la constante de PHP es siempre una cadena.
    const PHP = 'PHP 8.2';
}

class Foo implements I {
    // Pero las clases de implementación pueden definirlo como una matriz..
    const PHP = [];
}

PHP 8.3

interface I {
    const string PHP = 'PHP 8.3';
}

class Foo implements I {
    const string PHP = [];
}

// Fatal error: No se puede usar la matriz como valor para la constante de clase
// Foo::PHP de tipo cadena

Nueva función json_validate

Se ha agregado una nueva función json_validate que valida una cadena JSON.

PHP < 8.3

function json_validate(string $string): bool {
    json_decode($string);

    return json_last_error() === JSON_ERROR_NONE;
}

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

PHP 8.3


var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

Nuevas funciones de la extensión Random

La extensión «Random» se agregó en PHP 8.2 para proporcionar un sistema más flexible y extensible para operaciones que requieren bytes aleatorios, particularmente aquellas que requieren generación de números pseudoaleatorios criptográficamente seguros (CSPRNG). PHP 8.3 agrega varios métodos nuevos:

  • Random\Randomizer::getBytesFromString(string $string, int $length): string devuelve una secuencia de números aleatorios de una longitud especificada que solo contiene bytes de una cadena especificada. Esto puede resultar particularmente útil para generar cosas como URL cortas aleatorias.
  • Random\Randomizer::getFloat(float $min, float $max, Random\IntervalBoundary $boundary = Random\IntervalBoundary::ClosedOpen): float
  • Random\Randomizer::nextFloat(): float

Adición de mb_str_pad()

PHP ha tenido durante mucho tiempo una función str_pad() que permite rellenar el inicio, el final o ambos lados de una cadena con una cadena de «relleno», hasta que alcanza la longitud solicitada. Sin embargo, esta funcionalidad sólo funciona para codificaciones de caracteres de un solo byte, lo que elimina el uso con UTF-8 y otras codificaciones de varios bytes.

PHP 8.3 agrega una nueva función, mb_str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string. Imita la funcionalidad de str_pad(), con las siguientes diferencias:

  • Se pueden utilizar cadenas de varios bytes para la cadena que se va a rellenar, así como para la cadena que representa el relleno.
  • Estos utilizarán la codificación de la cadena para rellenar de forma predeterminada, pero también puedes especificar una codificación específica.

Consideraciones al actualizar o migrar a PHP 8.3

Para descargar el código fuente de PHP 8.3.0 y los archivos binarios de Windows se pueden encontrar en windows.php.net/download .

La lista de cambios se registra en el ChangeLog.

La guía de migración está disponible en el Manual de PHP. Consúltelo para ver la lista detallada de nuevas características y cambios incompatibles con versiones anteriores.