PHP 8.3: Novedades para tu programación

por David Abad
PHP 8.3 - Novedades

A finales de 2023 se publicó PHP 8.3 que trae interesantes novedades como el tipado de constantes, el autoincremento de índices de array negativos o la inclusión de la propiedad #[Override] entre otras.

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

Tipado de constantes

PHP 8.3 permite indicar el tipo de dato que almacena cada constante de clase:

PHP < 8.3
public const SAMPLE = 'Hello';
PHP 8.3
public const string SAMPLE = 'Hello';

Obtención dinámica de constantes

PHP 8.3 permite obtener el valor de constantes de clase indicando su nombre mediante el uso de variables. En versiones anteriores se necesitaba utilizar la función constant(), ya que no se permitía esta funcionalidad.

PHP < 8.3
class MiClase {
    public const SAMPLE = 'Hello';
}

$name = 'SAMPLE';
$value = constant(MiClase::class . '::' . $name);
PHP 8.3
class MiClase {
    public const SAMPLE = 'Hello';
}

$name = 'SAMPLE';
$value = MiClase::{$name};

Índices negativos autoincrementales en arrays

PHP 8.3 permite incluir datos en arrays, siguiendo una secuencia incremental de índices negativos:

PHP < 8.3
$arr = [];
$arr[-10] = 'A';
$arr[] = 'B';
$arr[] = 'C';
[
-10 => 'A',
0 => 'B',
1 => 'C',
]
PHP 8.3
$arr = [];
$arr[-10] = 'A';
$arr[] = 'B';
$arr[] = 'C';
[
-10 => 'A',
-9 => 'B',
-8 => 'C',
]

Nueva función: json_validate()

PHP 8.3 incluye un nueva función que permite comprobar si un string indicado se corresponde con un JSON válido. En versiones anteriores, la única forma de comprobar si un string contenía un JSON válido era realizando una decodificación del mismo.

PHP < 8.3
$json = '{"A": 1, "B": 2}';

json_decode($json);
$isValid = json_last_error() === JSON_ERROR_NONE;
PHP 8.3
$json = '{"A": 1, "B": 2}';

$isValid = json_validate($json);

Atributo #[Override]

PHP 8.3 incluye un nuevo atributo #[Override] pensado para utilizarse en herencia de clases. De modo que, si una clase sobreescribe una función de su clase padre, puede indicarse explicitamente mediante este atributo.

Al utilizar este atributo, si en la clase padre se modificase el nombre de la función sobreescrita (o se eliminase la función), se devolvería un error para informar de la inconsistencia.

class MiClasePadre
{
    public function miFuncion(): void { ... }
}

class MiClase extends MiClasePadre
{
    #[Override]
    public function miFuncion(): void { ... }
}

Clases anónimas readonly

PHP 8.3 permite que las clases anónimas puedan ser definidas como readonly.

$class = new readonly class {
    public function miFuncion(): void { ... }
};

Otros cambios

  • Actualización de la clase Randomizer con nuevas funciones.
  • Se permite el clonado de objetos con propiedades readonly.
  • Incluidos nuevos tipos de excepción para controlar errores específicos al tratar fechas / horas.
  • Control de visibilidad de constantes heredadas de interfaces (Error si se modifica la visibilidad de una constante heredada).
  • Nueva función mb_str_pad().
  • Mejor control de errores en la función unserialize().
  • Mejor control de errores en la función range().

Repasa los cambios introducidos en PHP 8.2

PHP8.2: Novedades
PHP 8.2: NOVEDADES PARA TU PROGRAMACIÓN

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.

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

¡No hacemos spam!

Otros artículos