¡Finalmente PHP 8 está con nosotros!
Uno de los lenguajes de programación de código abierto más populares entre los desarrolladores, liberó hoy su versión 8.0, ofreciendo entre otras ventajas, un aumento considerablemente en su rendimiento y nivel de seguridad.
¿Con qué nos vamos a encontrar?
Estas son algunas de las nuevas características que trae consigo PHP 8
- Compilador JIT La mayor novedad es el compilador JIT (Just In Time Compiler o Compilador Justo a Tiempo) que mejorará el rendimiento con una ejecución de código más rápida. El compilador almacenará parte del código durante el tiempo de ejecución, funcionando de manera muy similar a una versión en caché. Para aplicaciones Web tradicionales, implica una leve mejora de performance pero sobre todo, prepara el motor PHP para abarcar aplicaciones intensivas de uso de CPU como procesamiento masivo de datos, video, etc.
- Union Types Los “union types” son una colección de dos o más tipos de datos. De este modo, permite tener variables que acepten ser de tipos distintos, validando ambos. En la versión PHP 7 se introdujo el tipado en los parámetros de entrada y salida de las funciones, pero, dado que PHP es un lenguaje dinámico muchas veces nos veíamos obligados a no ponerlo porque las funciones podían devolver varios tipos. Ahora en PHP 8 puedes especificar directamente qué tipo de respuestas o parámetros son aceptables y cuáles no.
- Attributes Los atributos o anotaciones permiten añadir metadatos a las diferentes clases sin tener que parsear un PHPDoc completo. A partir de PHP 8 se podrá especificar atributos / anotaciones sin tener que recurrir a bloques de comentarios.
- Mixed Type Con PHP 8 se podrá tipar mediante “mixed” argumentos, propiedades y valores de retorno para representar varios de estos valores: array, bool, callable, int, float, null, object, resource, string. Utilizar esta función “mixed” ahorrará concatenar muchos tipos.
- Weak Maps PHP 8 introduce los “WeakMaps” que permiten almacenar referencias a objetos, pero sin impedir que estos sean eliminados por el “garbage collector”. Seguramente esto sea un añadido muy interesante para librerías encargadas de cachear objetos como por ejemplo hace Doctrine con las entidades que recupera y que, almacenándolas en WeakMaps permitirían liberar memoria de forma más eficiente cuando esas entidades dejan de tener referencias en algún momento.
Estas son solo algunas de las novedades de esta versión, hay mucho más por conocer y aprender ingresando a PHP o en la guía oficial de migración, para conocer las novedades e incompatibilidades de PHP 8
NOTA: La imagen a continuación, se trata de pruebas en desarrollo, es decir PHP 8-Dev y no sobre la versión final de PHP 8.