PHP 8.0 es una actualización de versión importante y un hito notable en PHP, ya que trae varias características nuevas para el sistema de tipos, sintaxis, manejo de errores, cadenas, programación orientada a objetos y más.
Son los esfuerzos de cientos de personas que se unen para dar forma al futuro de un lenguaje de programación que impulsa una parte significativa de los sitios web y aplicaciones de Internet.
Nuevas características
- Parámetros nombrados
- Atributos
- Promoción de propiedad de constructor de clases
- JIT
- Nueva interfaz `Stringable`
- Nuevos modificadores de precisión y ancho `*` en `printf`
- Nuevos especificadores `% h` y`% H` `printf`
- El servidor web incorporado admite la selección dinámica de puertos
- Nuevo formato de fecha `p` para la designación de zona horaria UTC` Z`
- Seguimiento de pila como cadena: la longitud máxima del parámetro es configurable
- WeakMaps
- Operador de seguridad nula
- tipo de retorno `static` para métodos de clase
- Nueva función `str_contains`
- Nueva función `fdiv`
- Nueva función `get_debug_type`
- Nueva función `preg_last_error_msg`
- La constante mágica `:: class` ahora es compatible con objetos
- Nueva excepción de error `ValueError`
- Nueva clase Tokenizer `PhpToken`
- Nuevas funciones `str_starts_with` y` str_ends_with`
- Nuevo pseudo tipo `mixto`
- Nuevos métodos `DateTime / DateTimeImmutable :: createFromInterface ()`
- Nueva función `get_resource_id`
- Expresiones coincidentes
- Tipos de unión
Cambios de sintaxis / funcionalidad
- Llamar a métodos de clase no estáticos da como resultado un error fatal
- Conversión de «flotante» a «cadena» independiente de la configuración regional
- Las firmas de métodos mágicos de clase se aplican estrictamente
- El informe de errores predeterminado se establece en «E_ALL»
- `substr`,` iconv_substr`, `grapheme_substr` devuelven una cadena vacía en compensaciones fuera del límite
- Los errores de inicio de PHP se muestran de forma predeterminada
- Extensión GD: El nombre del archivo DLL de Windows cambió de `php_gd2.dll` a` php_gd.dll`
- La función `crypt ()` requiere el parámetro `$ salt`
- Las reglas de herencia no se aplican a los métodos de clase «privados»
- Los recursos de extensión de sockets (`Socket` y` AddressInfo`) son objetos de clase
- Apache Handler: cambios en el nombre del módulo y la ruta del archivo
- PDO: modo de error predeterminado establecido en excepciones
- `@` El operador de supresión de errores no silencia los errores fatales
- Se permiten las comas finales en las listas de parámetros y en las listas de «uso» de cierre
- Los incrementos implícitos de clave de matriz negativa no omiten números negativos
- Los objetos `XMLWriter` reemplazan los recursos de` xmlwriter`
- OpenSSL: migración de recursos a objetos
- Los objetos `XMLParser` reemplazan los recursos` xml`
- Excepciones `catch` solo por tipo
- Las advertencias de funciones internas ahora arrojan excepciones `TypeError` y` ValueError`
- Las expresiones ahora pueden «lanzar» excepciones
- La extensión JSON siempre está disponible
- Los operadores `+` / `-` tienen mayor prioridad cuando se usan con el operador concat (` .`)
- Los objetos de clase `CurlHandle` reemplazan a los manejadores de curl
- Errores fatales en firmas de métodos incompatibles
- Las funciones desactivadas se comportan como si no existieran
- Los objetos de clase `GdImage` reemplazan los recursos de imagen GD
- Las afirmaciones arrojan excepciones de forma predeterminada
En desuso
- PostgreSQL: varias funciones con alias están en desuso
- Dar de baja los parámetros requeridos después de los parámetros opcionales en las firmas de funciones / métodos
- Los métodos `ReflectionParameter :: getClass ())`, `:: isArray ()` y `:: isCallable ()` en desuso
- Funciones deshabilitadas: Reflexión y `get_defined_functions ()` deprecaciones
- La función `libxml_disable_entity_loader` está obsoleta
Funciones y funciones eliminadas
- La extensión XMLRPC se mueve a PECL
- Se eliminan las banderas `FILTER_FLAG_SCHEME_REQUIRED` y` FILTER_FLAG_HOST_REQUIRED`