Ir al contenido
PHP Argentina 🐘

PHP 8.3

php, php8.3, seguridad, actualizacion, rendimiento3 minutos de lectura

PHP 8.3 Logo

PHP 8.3, trae consigo una serie de nuevas características que mejoran la expresividad, la seguridad y el rendimiento del lenguaje.

Echemos un vistazo a las más destacadas:

Constantes de clase tipificadas

Ahora podemos declarar el tipo de dato de las constantes de clase, mejorando la legibilidad y evitando errores.

1class Persona {
2 public const NOMBRE = "Juan Pérez"; // string
3 public const EDAD = 30; // int
4}
5
6echo Persona::NOMBRE . " tiene " . Persona::EDAD . " años.";

Búsqueda dinámica de constantes de clase y miembros de enumeraciones

Permite acceder a constantes de clase y miembros de enumeraciones de forma dinámica, lo que facilita el desarrollo de código flexible y adaptable.

1enum EstadoCivil {
2 SOLTERO,
3 CASADO,
4 VIUDO
5}
6
7$estado = EstadoCivil::CASADO;
8
9echo "El estado civil es " . $estado->name . " (" . $estado->value . ").";
10
11$nombreEstado = EstadoCivil::tryFrom(2);
12
13echo "El estado con el valor 2 es " . $nombreEstado->name . ".";

Nuevo atributo #[Override]

Se utiliza para indicar explícitamente cuando un método está redefiniendo un método de una clase padre, mejorando la seguridad y evitando errores accidentales.

1class Animal {
2 public function saludar() {
3 echo "Hola!";
4 }
5}
6
7class Perro extends Animal {
8 #[Override]
9 public function saludar() {
10 echo "Guau!";
11 }
12}
13
14$perro = new Perro();
15$perro->saludar(); // Imprime "Guau!"

Clonación profunda de propiedades de solo lectura

La clonación ahora copia correctamente los valores de las propiedades de solo lectura, lo que era inconsistente en versiones anteriores.

1class Persona {
2 private readonly string $nombre;
3
4 public function __construct(string $nombre) {
5 $this->nombre = $nombre;
6 }
7
8 public function __clone() {
9 // La propiedad $nombre se clona correctamente
10 }
11}
12
13$persona1 = new Persona("Juan Pérez");
14$persona2 = clone $persona1;
15
16echo "Persona 1: " . $persona1->nombre . "\n";
17echo "Persona 2: " . $persona2->nombre . "\n";
18
19$persona2->nombre = "María García";
20
21echo "Persona 1: " . $persona1->nombre . "\n";
22echo "Persona 2: " . $persona2->nombre . "\n";

Nueva función json_validate()

Permite validar una cadena JSON contra un esquema JSON, simplificando la gestión de datos JSON.

1$json = '{
2 "nombre": "Juan Pérez",
3 "edad": 30
4}';
5
6$esquema = '{
7 "type": "object",
8 "properties": {
9 "nombre": { "type": "string" },
10 "edad": { "type": "integer" }
11 }
12}';
13
14if (json_validate($json, $esquema)) {
15 echo "El JSON es válido.";
16} else {
17 echo "El JSON no es válido.";
18}

Nuevo método Randomizer::getBytesFromString()

Genera una secuencia de bytes a partir de una cadena, útil para la criptografía y otras tareas.

1$bytes = Randomizer::getBytesFromString("Hola mundo!");
2
3echo bin2hex($bytes); // Imprime una cadena hexadecimal que representa los bytes

Mejoras en el rendimiento

PHP 8.3 incluye varias optimizaciones que mejoran el rendimiento general del código.

Deprecaciones y cambios en el comportamiento

Algunas funciones y características han sido desaprobadas o han cambiado su comportamiento. Es importante revisar la documentación para actualizar el código.

En resumen, PHP 8.3 es una actualización importante que ofrece nuevas funcionalidades, mejoras en el rendimiento y mayor seguridad.

Te recomiendo actualizar tu proyecto a PHP 8.3 para aprovechar todas estas ventajas.

¡Espero que esta información te haya sido útil!

¡Hasta la próxima!

© 2025 por PHP Argentina 🐘.