Ya está disponible PHP 8.0, con compilador JIT y numerosas novedades en su sintaxis

26/11/2020Artículo original

Ya está disponible PHP 8.0, con compilador JIT y numerosas novedades en su sintaxis

Pocos meses después de que PHP cumpliera 25 años, acaba de lanzarse su versión 8.0. PHP sigue siendo el lenguaje de programación más usado en Internet a la hora de generar páginas web dinámicas (está detrás del 79% de las mismas), pese a la pujanza de tecnologías como Node.js o ASP.NET.

La anterior versión de PHP, la 7.4 (que seguirá recibiendo soporte hasta el 6 de diciembre de 2021) aportó notables mejoras de rendimiento, un apartado en el que también destacará la 8.0. Pero esta viene acompañada de muchas más novedades:

Compilador JIT

Sin ninguna duda, la principal novedad de PHP 8 es la introducción del compilador JIT (Just in Time), que permitirá compilar ciertas partes del código sobre la marcha, en tiempo de ejecución.

Esta funcionalidad, que estuvo a punto de ser incluida en la versión 7.4, lleva años siendo desarrollada y supone un gran cambio para el ecosistema PHP.

Cuando actualices tu actual instalación PHP, el compilador JIT aparecerá deshabilitado por defecto, pero podrá habilitarse desde el archivo php.ini, permitirá almacenar el código nativo de los archivos PHP en una región adicional de la memoria compartida OPcache.

  Comprender el diseño web: algunos consejos básicos

17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por quéEn Xataka17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por qué

Las pruebas preliminares confirmaron que la activación del compilador JIT permite multiplicar por cuatro el rendimiento de algunos tipos de tareas, especialmente aquellas que exigen muchos recursos de la CPU.

Lo cierto es que de esto, más que beneficiar a las clases de aplicaciones webs típicamente vinculadas a PHP (como podría ser, por ejemplo, WordPress), lo que hace es sobre todo abrir nuevas posibilidades a PHP como lenguaje de programación de uso general, permitiendo darle uso en campos como el machine learning.

Otros cambios

PHP 8 incorpora también diversos cambios a nivel sintáctico, pequeños pero relevantes, como:

  • La introducción de argumentos con nombre, que nos liberan de hacer coincidir el orden de los parámetros con la lista de parámetros de los métodos usados.
  • Propagación de propiedades automática: Actualmente, cuando queremos definir una propiedad en PHP estamos obligados a repetirla hasta en tres ocasiones antes de empezar a usarla. Pero esta nueva característica nos permite reducir significativamente la cantidad de código usada:
  Fundación Teléfonica presenta 42, una escuela gratuita para programadores, sin clases, ni horarios, ni profesores

Screenshot 24Antes y después.

  • Soporte para union types: antes de PHP 8, sólo podíamos especificar tipos de unión mediante anotaciones PHPdoc, pero la nueva versión incorporará soporte para los tipos de unión en las firmas de las funciones, ahorrándonos así, de nuevo, bastante código.
  • Match expression: PHP incorpora una nueva expresión de coincidencia similar a switch, pero dotada de una semántica más segura, así como de la capacidad de devolver valores.
  • Nuevo operador nullsafe: Actualmente, cuando queríamos comprobar en PHP que un getter no devolvía null, estábamos obligados a anidar sucesivos ifs. Pero, a partir de ahora, el primer getter que devuelva null anulará la ejecución de toda la cadena:

Screenshot 25Antes y después.

  • Expresión throw: Hasta ahora, en PHP throw era una declaración, por lo que no resultaba posible usarla en lugares donde sólo se permitiese el uso de una expresión. A partir de ahora, sin embargo, se considerará una expresión.
  Estos han sido los fragmentos de código más 'copypasteados' en Stack Overflow durante las últimas semanas

Vía | PHP.net

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName(‘head’)[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement(‘script’); instagramScript.src = ‘https://platform.instagram.com/en_US/embeds.js’; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad