Migration de code vers PHP 8 MBString (partie 2)

Table des matières
Dans la continuité du précédent article sur PHP 8, voici les modifications de l'extension multi-byte string qui peuvent avoir une incidence sur notre code et son bon fonctionnement sur cette nouvelle version majeure de PHP.
Articles de la série :
Partie 1 : Migration de code vers PHP 8 (partie 1)
Partie 2 : Migration de code vers PHP 8 MBString (partie 2)
Partie 3 : Nouvelle erreur ValueError dans PHP 8 (partie 3)
Alias de fonction ou fonctions supprimées
mbregex_encoding
->mb_regex_encoding
mbereg
->mb_ereg
mberegi
->mb_eregi
mbereg_replace
->mb_ereg_replace
mberegi_replace
->mb_eregi_replace
mbsplit
->mb_split
mbereg_match
->mb_ereg_match
mbereg_search
->mb_ereg_search
mbereg_search_pos
->mb_ereg_search_pos
mbereg_search_regs
->mb_ereg_search_regs
mbereg_search_init
->mb_ereg_search_init
mbereg_search_getregs
->mb_ereg_search_getregs
mbereg_search_getpos
->mb_ereg_search_getpos
mbereg_search_setpos
->mb_ereg_search_setpos
func_overload supprimée
La directive de configuration INI mbstring.func_overload
a été supprimée avec les constantes afférentes MB_OVERLOAD_MAIL
, MB_OVERLOAD_STRING
, et MB_OVERLOAD_REGEX
.
Tout comme la récupération des informations func_overload
et func_overload_list
via la méthode mb_get_info
.
Autres modifications de comportement
- Le tableau de résultat passé en référence dans l'argument
&$result
est maintenant obligatoire pour la fonctionmb_parse_str
. - Le modificateur
e
pour la fonctionmb_ereg_replace
a été supprimé. Il est nécessaire d'utiliser la fonctionmb_ereg_replace_callback
à la place. - Si la valeur de l'argument
pattern
de la fonctionmb_ereg_replace
n'est pas une chaîne de caractère, il sera transformé en chaine de caractère. Pour retrouver le comportement de PHP 7, il est nécessaire d'ajouter explicitement la fonctionchr
. Ce comportement ne peut pas être détecté par l'analyse statique du code. - La valeur de l'argument
needle
des fonctions suivantesmb_strpos
,mb_strrpos
,mb_stripos
,mb_strripos
,mb_strstr
,mb_stristr
,mb_strrchr
etmb_strrichr
ne peuvent plus être vides. Ce comportement ne peut pas être détecté par l'analyse statique du code. - Il n'est plus possible de fournir l'encodage en 3e argument à la fonction
mb_strrpos
. Il est obligatoire de saisir0
pour la valeur de l'argumentoffset
.
Conclusion
Comme pour de nombreuses améliorations, il est possible de détecter les modifications à apporter grâce à l'analyse statique. Certaines modifications peuvent même être réalisées automatiquement avec un outil de migration tel que Rector.
Restez à l'écoute, je vais réaliser d'autre article sur les modifications apportées par PHP 8 ayant une incidence sur notre code.