PUBLICIDAD

PHP 8.0 ya está disponible

PHP 8.0 es una actualización importante del lenguaje PHP y aquí te traemos las novedades.

PHP 8.0 ya está disponible

Amado por muchos, odiado por otros, PHP es uno de los grandes lenguajes programación ampliamente usado y que no se le puede dar por muerto y esta actualización es muestra de ello.

En su blog nos comentan las siguientes novedades: “PHP 8.0 es una actualización importante del lenguaje PHP que contiene nuevos recursos y optimizaciones incluyendo argumentos nombrados, tipos de uniones, atributos, promoción de propiedades constructivas, expresiones match, operador nullsafe, JIT (traducción dinámica) y también mejoras en el sistema de tipos, manejo de errores y consistencia en general.”

A continuación, listaremos esas nuevas características y conoceremos sus usos:

Argumentos nombrados

Los argumentos con nombre permiten pasar argumentos a una función en función del nombre del parámetro, en lugar de la posición del parámetro. Esto hace que el significado del argumento se self-documenting, hace que los argumentos sean independientes del orden y permite omitir los valores predeterminados de forma arbitraria.

  • Solamente especifica los parámetros requeridos, omite los opcionales.
  • Los argumentos son independientes del orden y se documentan automáticamente.

Atributos

En vez de anotaciones en PHPDoc, puedes usar metadatos estructurados con el sintax nativo de PHP.

Promoción de propiedades constructivas

Actualmente, la definición de objetos de valor simple requiere mucha repetición, porque todas las propiedades deben repetirse al menos cuatro veces.

Con esta nueva actualización tenemos menos código repetitivo para definir e inicializar una propiedad.

Tipos de unión

En vez de anotaciones en PHPDoc para combinar tipos, puedes usar una declaración de tipo unión nativa que será validada en el momento de ejecución.

Expresiones match

Las nuevas expresiones match son similares a switch y tienen las siguientes características:

  • Match es una expresión; esto quiere decir que pueden ser almacenadas como variables o devueltas.
  • Match soporta expresiones de una línea y no necesitan romper la declaración de un break.
  • Match hace comparaciones estrictas.

Operador Nullsafe

En vez de verificar condiciones nulas, tú puedes utilizar una cadena de llamadas con el nuevo operador nullsafe. Cuando la evaluación de un elemento falla, la ejecución de la entire cadena es abortada y la cadena entera es evaluada como nula.

Comparaciones inteligentes entre “strings” y números

Cuando comparas con un “string” numérico, PHP8 usa comparación numérica o de otro caso convierte el número a un “string” y así los compara.

Errores consistentes para funciones internas

La mayoría de las funciones internas ahora proveen un error de excepción si el parámetro no es validado.

JIT (traducciones dinámicas)

PHP8 introduce 2 motores de compilación JIT. Transit JIT, es el más prometedor de los dos y performa 3 veces mejor en benchmarks sintéticos y 1.5-2 mejor en algunas aplicaciones específicas a largo plazo. Performancia de aplicaciones típicas es a la par de las de PHP7.4

JIT contribuciones al funcionamiento relativo de PHP8

Mejorías en los tipos de sistemas y manejo de errores

  • Verificaciones estrictas de operadores aritméticos/bitwise.
  • Validación de métodos con características abstractas.
  • Firmas correctas de métodos mágicos.
  • Reclacificamiento de errores fatales.
  • Errores fatales incompatibles con el método de firma.
  • El operador @ no omitirá errores fatales.
  • Herencia con métodos privados.
  • Tipos mixtos.
  • Tipo retorno statico.
  • Tipos para funciones internas Email thread.
  • Objetos opacos en vez de recursos para Curl, Gd, Sockets, OpenSSL, XMLWriter, y XML extensiones.

Otros ajustes y mejoras del sintax

  • Permitir una coma al final de una lista de parámetros RFC y lista de use en closures.
  • Catches que no capturan.
  • Ajustes al syntax variable.
  • Tratamiento de nombres de namespace como tokens únicos.
  • Throw es ahora una expresión.
  • Permitir ::class on objects.

Nuevas clases, interfaces y funciones

  • Weak Map clase
  • Stringable interface
  • str_contains(), str_starts_with(), str_ends_with()
  • fdiv()
  • get_debug_type()
  • get_resource_id()
  • token_get_all() Implementación de objeto

Mejor performancia, mejor syntax, aumentada seguridad de tipos.


               

Más contenido

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

PUBLICIDAD