Después de años de desarrollo, en noviembre del 2020 se presentó  PHP 8 según OpenNet, incluye una serie de nuevas funciones y varios cambios que rompen la compatibilidad.

Mejoras clave de PHP 8.0:

Habilitando el compilador JIT, PHP traduce las fuentes de script PHP en una representación intermedia (código de bytes), que luego se ejecuta en Zend VM.

JIT ayuda a mejorar aún más el rendimiento al convertir el código de bytes en código de máquina específico del hardware que puede ser ejecutado directamente por el procesador, sin pasar por el intérprete de código de bytes en la máquina virtual Zend.

Brinda soporte para: ·Argumentos de funciones con nombre, lo que le permite pasar valores a una función junto con nombres, es decir, puede pasar argumentos en orden arbitrario y definir argumentos opcionales. 
Al llamar a métodos, se permite utilizar el operador “ ?", que le permite iniciar una llamada solo si el método está presente, lo que evita comprobaciones innecesarias de valores devueltos null. ·Tipos de unión que definen colecciones de 2 o más tipos, ·Atributos (anotaciones) para vincular metadatos (como información de tipo) a clases sin usar la sintaxis de Docblock. ·Expresiones matchque, a diferencia de las que switch pueden devolver valores, admiten condiciones de combinación, usan comparaciones de tipos estrictas y no necesitan ser especificadas break. ·Una sintaxis abreviada para las definiciones de clases para combinar las definiciones de constructor y de propiedad.

 

Nuevo tipo de devolución static

Un nuevo tipo mixed que se puede usar para definir si una función aceptará parámetros con diferentes tipos.

Una expresión throw para manejar excepciones.

WeakMap para crear objetos que puedan ser donados para la recolección de basura.

La capacidad de usar una expresión: class para objetos (análogo a una llamada get class ()).

Capacidad para definir catch excepciones en un bloque que no están vinculadas a variables.

Posibilidad de dejar una coma después del último elemento de la lista de parámetros de la función.

Una nueva interfaz Stringable para identificar cualquier tipo de cadena o datos que se puedan convertir en una cadena (para la que hay un método disponible __toString ()).

Una nueva función str_contains (), un análogo simplificado strpos para determinar la ocurrencia de una subcadena, así como funciones str_starts_with ()y  str_ends_with ()para verificar coincidencias al principio y al final de una cadena.

Se ha añadido una función fdiv ()que realiza una operación de división sin mostrar error en el caso de división por cero.

Cambió la lógica de unir cuerdas. Por ejemplo, una expresión se 'echo ''sum: ''. $a + $b' interpretó previamente como 'echo (''sum: ''. $a) + $b', y en PHP 8 se interpretará como 'echo ''sum: ''. ($a + $b)'.

La comprobación de operaciones aritméticas y bit a bit se ha endurecido, por ejemplo, las expresiones " [] % [42]" y " $object + 4" conducirán a un error.

Se ha implementado un algoritmo de clasificación estable, en el que el orden de los mismos valores se conserva en diferentes ejecuciones.

Se modificó el comportamiento al comparar tipos numéricos y de cadena.

Trabajar sobre la cresta de la ola de este nuevo lenguaje, nos permite reducir las brechas de seguridad y fundamentalmente adaptar los productos de nuestro clientes a entornos competitivos cada vez más exigentes, en los cuales una pequeña diferencia puede ser definitoria para una estrategia de SEO y SERP.

Dominar la tecnología para aplicarla antes y mejor es sin dudas una fortaleza de nuestra compañía, que evalúa de forma constante y persistente las tendencias para adaptarse al cambio y responder en tiempo y forma a los requerimientos de nuestros competidores.