Ya no es necesario que el marcador de cierre de los string de documento vaya seguido de un punto y coma o línea nueva. Además, el marcador de cierre puede ser sangrado, en en cuyo caso la indentación se quitará de todas las líneas del string de documento.
La desestructuración de arrays ahora soporta asignaciones de referencia utilizando la sintaxis [&$a, [$b, &$c]] = $d. Lo mismo se soporta también para list().
instanceof ahora permite los literales como el primer operando, en
en cuyo caso el resultado es siempre FALSE
.
Una nueva excepción CompileError ha sido añadida, de
la cual hereda ParseError. Un pequeño número de
errores de compilación lanzarán ahora CompileError
en vez de generar un error fatal. Actualmente esto sólo afecta a los errores
de compilación que pueden ser lanzados por token_get_all() en
modo TOKEN_PARSE
, pero más errores pueden ser convertidos
en el futuro.
Ahora se permiten las comas en las llamadas a funciones y métodos.
El argumento de configuración--with-password-argon2[=dir]
ahora proporciona soporte tanto para los hashes de Argon2i como de Argon2id en las fuynciones
password_hash(), password_verify(),
password_get_info(), y
password_needs_rehash(). Las contraseñas pueden ser descifradas
y verificadas usando la constante PASSWORD_ARGON2ID
.
El soporte tanto para Argon2i como para Argon2id en las funciones password_*()
ahora requiere que PHP esté enlazado con la biblioteca de referencia libargon2 ≥
20161029.
Se han añadido nuevas opciones para personalizar el registro de FPM:
bcscale() ahora también puede ser usado como getter para recuperar la escala actual en uso.
El soporte completo para los controles de LDAP se ha añadido a las funciones de consulta LDAP y
LDAP_OPT_SERVER_CONTROLS
y
LDAP_OPT_CLIENT_CONTROLS
en
ldap_get_option() y
ldap_set_option() ha sido arreglado.
Se ha añadido soporte al mapeo completo y el plegado de casos. A diferencia del mapeo simple, el mapeo completo de los casos puede cambiar la longitud del string. Por ejemplo:
<?php
mb_strtoupper("Straße");
// Produces STRAßE en PHP 7.2
// Produces STRASSE en PHP 7.3
?>
MB_CASE_LOWER
(usado por mb_strtolower())
MB_CASE_UPPER
(usado por mb_strtoupper())
MB_CASE_TITLE
MB_CASE_FOLD
MB_CASE_LOWER_SIMPLE
MB_CASE_UPPER_SIMPLE
MB_CASE_TITLE_SIMPLE
MB_CASE_FOLD_SIMPLE
(utilizado en operaciones que no tienen en cuenta los casos)
Las operaciones de string insensible a las mayúsculas y minúsculas utilizan ahora el plegado de mayúsculas en lugar del mapeo de mayúsculas y minúsculas durante las comparaciones. Esto significa que más caracteres serán considerado (caso insensible) igual ahora.
mb_convert_case() con MB_CASE_TITLE
ahora realiza una conversión de título-caso basado en Cased y CaseIgnorable
propiedades derivadas de Unicode. En particular, esto también mejora el manejo de
comillas y apóstrofes.
La tabla de datos Multibyte String ha sido actualizado para Unicode 11.
Las Funciones Multibyte String ahora soportan correctamente strings de más de 2GB.
Funcionamiento de la extensión Multibyte String extension ha mejorado significativamente en todos los aspectos. Las mayores mejoras son en las funciones de conversión de casos.
Las funciones mb_ereg_* ahora soportan capturas nombradas. Las funciones de coincidencia como mb_ereg() ahora retornarán capturas nombradas usando su número de grupo como su nombre, de forma similar a la PCRE:
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
\k<>
y \k''
para referirse a las capturas nombradas
en el string de reemplazo:
<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
y \k''
también puede utilizarse para referencias
numeradas, que también funciona con números de grupo mayores de 9.
Soporte para las opciones completion_append_character y completion_suppress_append ha sido añadido para readline_info(). Estas opciones sólo están disponibles si PHP está vinculado con libreadline (más que con libedit).