Novedades y Cambios en PHP 8.3

php 8.3

Introducción

La versión 8.3 de PHP, lanzada el 23 de noviembre de 2023, es una actualización importante que trae consigo una serie de nuevas características y cambios significativos. Este artículo explora los principales aspectos de esta versión, proporcionando ejemplos de código para ayudar a los desarrolladores a entender y adaptarse a estos cambios.


Características Nuevas en PHP 8.3

  1. Constantes de Clase Tipadas Hasta PHP 8.3, las constantes de clase no podían declarar su tipo. Ahora, se pueden declarar explícitamente, lo que tiene implicaciones importantes en la herencia y en las clases abstractas.

    class Ejemplo {
      public const int CONSTANTE_ENTERA = 10;
      // Antes de PHP 8.3, esto no era posible.
    }
  2. Soporte Dinámico para Constantes de Clase y Miembros de Enum PHP 8.3 permite acceder dinámicamente a constantes de clase y miembros de Enum, una funcionalidad que antes no estaba disponible.

    $nombreConstante = 'CONSTANTE_ENTERA';
    echo Ejemplo::{$nombreConstante}; // Muestra 10
    
  3. Función json_validate() Anteriormente, la validación de una cadena JSON requería el uso de json_decode(), con riesgos de memoria. PHP 8.3 introduce json_validate() para una validación más eficiente.

    $json = '{"nombre": "Juan"}';
      if (json_validate($json)) {
        // JSON válido
      }
  4. Adiciones a la Extensión Random La extensión Random añade métodos para generar secuencias de números aleatorios de manera más flexible.

    echo Random\Randomizer::getBytesFromString("abcd", 5); // Ejemplo: "bcada"
    
  5. Función mb_str_pad() Esta función permite agregar relleno a cadenas multibyte, una mejora de str_pad() que solo funcionaba con codificaciones de un solo byte.

    echo mb_str_pad("Hola", 10, " Mundo", STR_PAD_RIGHT); // Output "Hola Mundo"
  6. Atributo #[\Override] El atributo #[\Override] se introduce para marcar métodos que sobrescriben métodos de una clase padre, mejorando la legibilidad y evitando errores.

    class Hija extends Ejemplo {
      #[\Override]
      public function metodoPadre() {
        // Código que sobrescribe el método de la clase padre
      }
    }
    

Cambios y Deprecaciones en PHP 8.3

  1. class_alias para Built-ins de PHP PHP 8.3 ahora permite usar class_alias() para crear alias de clases incorporadas en PHP.

    class_alias('ClaseOriginal', 'ClaseAlias');
  2. Cambio de Nivel de Advertencia en unserialize() La función unserialize() ahora emite un E_WARNING en lugar de un E_NOTICE para cadenas inválidas.

    unserialize('cadena no válida'); // Emite E_WARNING
  3. Soporte de Valor de Respaldo en php.ini PHP 8.3 permite especificar valores de respaldo para variables de entorno en el archivo php.ini.

    // php.ini
    // xdebug.client_host = "${XDEBUG_CLIENT_HOST:-localhost}"
  4. Información Extendida en gc_status() La función gc_status() ahora devuelve más información, útil para depuración.

    print_r(gc_status());
  5. Lint de Múltiples Archivos a la Vez PHP 8.3 permite lintar varios archivos simultáneamente usando el interruptor -l.

    php -l src/**/*.php
  6. Excepciones en la Extensión SQLite3 La extensión SQLite3 ahora utiliza excepciones de manera predeterminada.

    $sqlite = new SQLite3('mi_base_de_datos.db');
    $sqlite->enableExceptions(true);

Conclusión

PHP 8.3 ofrece una gama de mejoras y cambios que los desarrolladores deben considerar al actualizar. Estas actualizaciones mejoran la expresividad y legibilidad del código, y los cambios de depreciación realzan el rendimiento y la seguridad. Es vital que los desarrolladores se familiaricen con estas novedades para mantener sus aplicaciones al día y aprovechar al máximo las capacidades de PHP.

A nosotros lo que más nos ha gustado es la función json_validate() por su utilidad. ¿Nos hemos dejado algo por comentar de esta nueva versión? ¿Cuál ha sido el cambio que más esperabas? ¿Está php muerto otra vez? (xD) Dínoslo en los comentarios!

PHP
Comparte este artículo:
Publicado por CésarMSFelipe
Image

Hola a todos, soy desarrollador de Drupal, especializado en Backend, aunque a veces hago mis pinitos con Frontend, ¡Hasta sé centrar un div! Cuando no estoy sumergido en el código, probablemente me encontraréis explorando nuevos mundos en mis videojuegos favoritos o disfrutando de tiempo de calidad con los míos. Me apasiona combinar la tecnología con la creatividad, y siempre estoy buscando nuevas formas de aprender y crecer en mi campo. ¿Unimos fuerzas y creamos algo?