PHP 8.3: Todas las Mejoras y Características que Trae

La Llegada de PHP 8.3: Prepárate para un Importante Salto en Rendimiento y Productividad

PHP es uno de los lenguajes de programación más utilizados para el desarrollo web. Y su nueva versión 8.3 llega cargada de novedades interesantes que prometen revolucionar el rendimiento, seguridad y agilidad de desarrollo de aplicaciones web.

Si actualmente creas sitios web o aplicaciones web con PHP 7 u 8, te conviene conocer a fondo las mejoras que trae PHP 8.3. Te ayudará a crear software más rápido, eficiente y seguro.

PHP 8.3 Multiplica la Velocidad de Ejecución de Código Complejo

Uno de los cambios más destacables en PHP 8.3 son los avances orientados a optimizar la velocidad de ejecución del código PHP.

Dependiendo de qué tan compleja y demandante sea tu aplicación web, con PHP 8.3 podrías obtener incrementos en la velocidad de procesamiento de entre un 15% para código simple, hasta más de un 25% en código complejo con mucha lógica.

Esto se traduce en que tus aplicaciones web van a responder más rápido y soportar más tráfico y usuarios simultáneos. Un gran avance.

¿Cómo lo Logra PHP 8.3?

PHP 8.3 incorpora dos mejoras clave enfocadas en la compilación y ejecución de código:

  • - JIT (Just in Time Compilation): esta técnica permite compilar código PHP a un lenguaje máquina nativo mientras se ejecuta, en lugar de tener que interpretarlo y compilarlo desde cero en cada petición web.

Esto evita latencias al reutilizar el código ya compilado previamente y almacenado en caché. Según los propios desarrolladores de PHP, JIT puede acelerar hasta 4 veces algunas ejecuciones complejas.

  • - Recolección incremental de basura: el proceso de limpieza de memoria ahora se hace de forma más eficiente e inteligente, reduciendo las pausas que antes entorpecían una ejecución fluida..

Por ejemplo, un script PHP que procese imágenes aplicando filtros se ejecutará notablemente más rápido con PHP 8.3:

function procesar_imagen($ruta_imagen) {

  //Abrir imagen
  $img = abrir_imagen($ruta_imagen);

  //Aplicar filtro
  aplicar_filtro($img, 'sepia');

  //Guardar imagen editada
  guardar_imagen($img, 'imagen_sepia.jpg');

}

Procesamientos como este que requieren muchos recursos serán mucho más ágiles.

Rendimiento Real

Según las métricas preliminares de los desarrolladores de PHP, en las pruebas realizadas la JIT de PHP 8.3 aceleró WordPress en un 29%, Laravel en un 24% y Magento en un 13%. Son ganancias muy significativas de performance.


Nuevas Características para Agilizar el Desarrollo

Además de enfocarse en la velocidad de ejecución, PHP 8.3 también incorpora varias funciones nuevas que te permitirán desarrollar aplicaciones web de forma más ágil y productiva. Veamos algunos ejemplos:

Union Types

Esta función permite definir parámetros y propiedades que pueden aceptar diferentes tipos de datos según sea necesario.

Por ejemplo, antes si una función necesitaba aceptar un número entero o flotante, habría que codearla dos veces:

function sumar_enteros(int $x, int $y) {
  return $x + $y;
}

function sumar_flotantes(float $x, float $y) {
  return $x + $y;
}

Con Union Types ahora puedes hacerlo así:

function sumar(int|float $x, int|float $y) {
  return $x + $y;
}

Mucho más simple y limpio.

Atributos en Clases

Los atributos permiten agregar metadata o modificadores a la declaración de una clase. Por ejemplo, imagina que queremos crear un atributo #[Cacheable] para indicar que una clase será cacheada.

Primero, definimos el atributo:

#[Attribute(Attribute::TARGET_CLASS)]
class Cacheable 
{
  //...
}

Luego, lo aplicamos a una clase:

#[Cacheable] 
class Producto {

  public $nombre;
  public $precio;

  // ...

}

Ahora, en otra parte de la aplicación podríamos leer este atributo para saber que la clase Producto debe ser cacheada:

$atributos = (new ReflectionClass(Producto::class))->getAttributes();

foreach ($atributos as $a) {
  if ($a->getName() == Cacheable::class) {
    // Cachear la clase Producto
  }
}

De esta forma, los atributos nos permiten marcar y modificar el comportamiento de clases de una manera mucho más limpia.

Son muy útiles por ejemplo para integrar bibliotecas externas que podrían necesitar cierta configuración a nivel de clase. O para implementar patrones como Dependency Injection.

Fibers

Las Fibers son una forma eficiente de implementar rutinas asíncronas en PHP sin necesidad de crear procesos o threads adicionales. Veamos un ejemplo básico:

// Crear Fiber
$fiber = new Fiber(function () {
  // Código a ejecutar
});

// Ejecutar Fiber
$fiber->start();

// Esperar finalización
$fiber->join();

Como ves, permite encapsular un bloque de código asíncrono dentro de un objeto Fiber.

Esto presenta varias ventajas:

  • - No bloquea el proceso principal: el código dentro del Fiber se ejecuta de forma no bloqueante, dejando libre el proceso principal.

  • - Cooperativo: múltiples Fibers pueden ejecutarse con cambios de contexto coordinados, sin necesidad de threads separados.

  • - Rendimiento: minimiza overhead de recursos al mantener un único proceso.

Veamos un ejemplo más complejo:

// Fiber 1 
$fiber1 = new Fiber(function() {
  // Código tarea 1
  sleep(1); 
  print "Tarea 1 finalizada\n";
});

// Fiber 2
$fiber2 = new Fiber(function() {
  // Código tarea 2
  sleep(2);
  print "Tarea 2 finalizada\n";  
});

// Ejecutar fibers en paralelo
$fiber1->start();
$fiber2->start();

$fiber1->join();
$fiber2->join();

// Salida:
// Tarea 1 finalizada  
// Tarea 2 finalizada

Como puedes ver, los Fibers permiten ejecutar tareas asíncronas de forma mucho más simple y eficiente que con abstracciones más complejas como procesos o hilos.

Otras Mejoras

Otras adiciones de PHP 8.3 enfocadas en la productividad son:

  • - Manejo de errores más estricto

  • - Depuración más sencilla con variables en stack traces

  • - Testing integrado en el lenguaje

Todas estas nuevas capacidades harán más placentero y productivo crear aplicaciones web con PHP.


Calendario de Lanzamiento

PHP 8.3 está actualmente en fase Beta 3, lanzada en Noviembre 2022. Se espera que la versión RC (Release Candidate) esté lista a finales de Diciembre.

La versión oficial estable de PHP 8.3 se liberará el 9 de Febrero de 2023, según el cronograma publicado por el grupo de desarrollo de PHP.

Aprovecha los próximos meses para ir preparando tus aplicaciones y estar listo para actualizar cuando PHP 8.3 se lance. Tus aplicaciones web lo agradecerán.


Conclusión

PHP 8.3 marca una nueva era en el desarrollo de aplicaciones web con PHP. Trae consigo importantes avances tanto en velocidad de ejecución como en productividad de desarrollo.

Actualiza tus conocimientos y habilidades en PHP para poder sacar el máximo provecho de todo lo nuevo que ofrece PHP 8.3. El futuro del desarrollo web con PHP luce más rápido y prometedor que nunca.

Preguntas Frecuentes

No es obligatorio. Muchos programadores prefieren esperar un tiempo prudencial para garantizar que no haya problemas de estabilidad o compatibilidad en las primeras versiones. Evalúa si las ventajas que te aportaría PHP 8.3 compensan el esfuerzo de actualizar un proyecto que ya funciona estable.

Sí, PHP históricamente ha mantenido excelente retrocompatibilidad entre versiones. Pero siempre es buena práctica probar a fondo tu aplicación en un entorno de pruebas aislado para detectar posibles problemas puntuales.

No se esperan cambios drásticos que rompan aplicaciones anteriores. Pero como en cada release, se han eliminado algunas funciones obsoletas que ya estaban en desuso, como por ejemplo mysql_connect(). Revisa el changelog detallado para identificar possibles ajustes que debas realizar en tu código.

Para nada. Una de las ventajas de PHP es su retrocompatibilidad. Tu código existente seguirá funcionando. Podrás ir incorporando nuevas funciones y técnicas de PHP 8.3 progresivamente cuando sea necesario optimizar ciertas partes de tu aplicación.

Deja un Comentario

¡Bienvenido a nuestro sitio web!

Este sitio utiliza cookies para mejorar tu experiencia de navegación y proporcionar funciones adicionales relacionadas con el análisis de tráfico y el rendimiento del sitio. Política de cookies.