Migration de code vers PHP 8 MBString (partie 2)

Par @jbnahan69

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 fonction mb_parse_str.
  • Le modificateur e pour la fonction mb_ereg_replace a été supprimé. Il est nécessaire d'utiliser la fonction mb_ereg_replace_callback à la place.
  • Si la valeur de l'argument pattern de la fonction mb_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 fonction chr. Ce comportement ne peut pas être détecté par l'analyse statique du code.
  • La valeur de l'argument needle des fonctions suivantes mb_strpos, mb_strrpos, mb_stripos, mb_strripos, mb_strstr, mb_stristr, mb_strrchr et mb_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 saisir 0 pour la valeur de l'argument offset.

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.

 

Author avatar
Jean-Baptiste Nahan

Consultant Expert Web, j'aide les entreprises ayant des difficultés avec leur projet Web (PHP, Symfony, Sylius).

@jbnahan69 | Macintoshplus | Linkedin | JB Dev Labs