Le marqueur fermant pour les chaînes doc n'est plus requis d'être suivi par un point virgule ou un retour à la ligne. Additionellement le marqueur fermant peut être indenté, dans ce cas l'indentation sera retirée de toutes les lignes dans la chaîne doc.
La déstructuration de tableaux supporte désormais les assignements de
référence en utilisant la syntaxe
[&$a, [$b, &$c]] = $d
.
Ceci est aussi supporté pour list().
instanceof
accepte désormais les littéraux comme premier
opérant, dans ce cas le résultat est toujours false
.
Une nouvelle exception CompileError a été ajoutée,
duquel ParseError inhérite. Un petit nombre d'erreurs
de compilation lanceront désormais CompileError au
lieu de générer une erreur fatale. Actuellement ceci affecte uniquement les
erreurs de compilation qui peuvent être lancées par
token_get_all() dans le mode TOKEN_PARSE
,
mais plus d'erreurs pourront être converties dans le futur.
Les virgules de fin dans les appels de fonctions et méthodes sont désormais autorisées.
L'argument de configuration
--with-password-argon2[=dir]
fournit désormais le support pour les hash Argon2i et Argon2id dans les
fonctions password_hash(),
password_verify(),
password_get_info(), et
password_needs_rehash(). Les mots de passe peuvent être
hachés et vérifiés en utilisant la constante PASSWORD_ARGON2ID
.
Le support pour Argon2i et Argon2id dans les fonctions
password_*() nécessite désormais que PHP soit lié à
la bibliothèque de référence libargon2 ≥ 20161029.
De nouvelles options ont été ajoutées pour personnaliser les journaux d'événements FPM :
log_limit
log_buffering
decorate_workers_output
catch_workers_output
est activé.
bcscale() peut désormais être utilisé en tant que récupérateur pour récupérer la précision actuellement en utilisation.
Le support total pour les Contrôles LDAP a été ajouté aux fonctions de requête LDAP et ldap_parse_result() :
$serverctrls
pour envoyer les contrôles
au serveur dans ldap_add(),
ldap_mod_replace(), ldap_mod_add(),
ldap_mod_del(), ldap_rename(),
ldap_compare(), ldap_delete(),
ldap_modify_batch(),
ldap_search(), ldap_list() et
ldap_read() a été ajouté.
$serverctrls
pour récupérer les
contrôles depuis le serveur dans ldap_parse_result() a
été ajouté.
LDAP_OPT_SERVER_CONTROLS
et
LDAP_OPT_CLIENT_CONTROLS
dans
ldap_get_option() et
ldap_set_option() a été corrigé.
Le support pour le mappage pleine casse et pliage de casse a été ajouté. Contrairement au mappage basique de casse, le mapping pleine casse peut modifier la longueur de la chaîne. Par exemple :
<?php
mb_strtoupper("Straße");
// Produit STRAßE en PHP 7.2
// Produit STRASSE en PHP 7.3
?>
MB_CASE_LOWER
(utilisé par mb_strtolower())
MB_CASE_UPPER
(utilisé par mb_strtoupper())
MB_CASE_TITLE
MB_CASE_FOLD
MB_CASE_LOWER_SIMPLE
MB_CASE_UPPER_SIMPLE
MB_CASE_TITLE_SIMPLE
MB_CASE_FOLD_SIMPLE
(utilisé par les opérations insensibles à la casse)
Les opérations de chaînes insensibles à la casse utilisent désormais le pliage de casse au lieu du mappage de casse lors des comparaisons. Ceci signifie que plus de caractères seront considérés (insensible à la casse) égaux désormais.
mb_convert_case() avec MB_CASE_TITLE
exécute désormais une conversion de casse de titre basée sur les propriétés
dérivées Unicode Cased et CaseIgnorable. En particulier ceci améliore aussi
la gestion des guillemets et apostrophes.
Les tables de données pour les Chaînes Multi-octets ont été mis à jour pour Unicode 11.
Les Fonctions de Chaînes Multi-Octets supportent désormais correctement les chaînes plus grandes que 2Go.
Les performances de l'extension des Chaînes Multi-Octets ont été améliorées de façon significative à tous les niveaux. Les plus grandes améliorations sont dans les fonctions de conversion de casse.
Les fonctions mb_ereg_*
supportent désormais les captures
nommées. Les fonctions de correspondances comme mb_ereg()
retourneront désormais les captures nommées en utilisant à la fois leurs
numéros de groupe et leurs noms, similaires à PCRE :
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
\k<>
et \k''
pour faire référence
aux captures nommées dans la chaîne de remplacement :
<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
et \k''
peuvent aussi être utilisés pour
les références numériques, qui fonctionnent aussi avec des nombres de groupe
supérieur à 9.
Le support pour les options completion_append_character
et completion_suppress_append
a été ajouté à
readline_info(). Ces options sont seulement disponibles
si PHP est lié à libreadline (plutôt que libedit).