En noviembre 26 del 2020 tendremos la nueva versión de PHP en su versión 8.0. Las versiones Alpha de esta versión empezaron a salir en Junio y actualmente se encuentra  en su versión Beta 2, faltando Beta 3 en septiembre y sus versiones RC septiembre - octubre para concluir en su versión final en Noviembre 26.

PHP sigue bastante activo y con una comunidad comprometida en seguir mejorando, solo recordemos brevemente que la versión 7 fue bastante importante eliminando funcionalidades obsoletas de versiones anteriores.

PHP 8 sigue el camino de mejorar rendimiento y agregar nuevas funcionalidades.

NUEVAS FUNCIONALIDADES

Revisemos algunas de las nuevas funcionalidades que incorporará esta nueva versión:

Null safe operator

Se agrega la funcionalidad de validar si un atributo cuenta con valor si no devuelve un valor `null`. Actualmente algunos frameworks como laravel ofrecen helpers con esta funcionalidad optional.

Validación convencional

Ocupando nullsafe operator ?->

PHP JIT

Incluye un compilador Just In Time. PHP es un lenguaje interpretado, esto quiere decir que cada archivo se analiza, compila y ejecuta en cada solicitud. Usando JIT se compilará una parte del código en código máquina con ayuda del CPU, esperando con esto una gran mejora en el rendimiento de las aplicaciones, incluso con la posibilidad de mover código nativo en C a PHP, ya que según el RFC PHP será lo suficientemente rápido.

Union Type

Con “union type” se podrán definir  diferentes tipos de datos de entrada. Como PHP es de tipado dinámico, puede resultar muy útil cuando en un método esperas  recibir un entero o un tipo flotante.

Named Arguments

Con esto permitirá declarar los argumentos de una función declarándose de manera directa por el nombre del parámetro, sin importar el orden de la posición. Como ejemplo la siguiente función:

Como vemos en el ejemplo nos permite declarar el argumento `double_encode` sin tener que declarar los default hasta llegar al orden del parámetro. Logrando que con el uso de named arguments el código sea más autodocumentado y claro al momento de usar métodos con bastantes parámetros.

Match expression

La funcionalidad de match es similar a switch pero sin la necesidad de tener break y con la posibilidad de regresar valores.

Non-capturing catches

Para capturar una excepción en PHP es necesario declarar una variable aún cuando no sea usada.

Con este cambio ahora la variable puede ser omitida:

Actualizando aplicaciones a PHP 8

Al querer actualizar una aplicación existente en PHP hay una serie de puntos que se necesitan considerar  ya que muchas excepciones que antes estaban como Notice o Warning ahora son excepciones tipo Error, y hay  nuevas palabras reservadas que se incluirán como match.

También debe tomarse en cuenta el histórico de las funcionalidades deprecadas de versiones anteriores.

PHP sigue avanzando con una gran comunidad y desarrolladores comprometidos en seguir mejorando el lenguaje.

Referencias:

https://stitcher.io/blog/new-in-php-8

https://wiki.php.net/todo/php80

https://www.php.net/supported-versions.php

https://levelup.gitconnected.com/how-fast-is-php-8-going-to-be-f7fdc111cd6