Compat PHP 8.1
Il y a quelques soucis à l’utilisation de PHP 8.1 pour le moment.
Le plus embêtant est du à un changement lors d’erreurs de mysql : https://php.watch/versions/8.1/mysqli-error-mode : une exception est levée maintenant. Et comme notre code ne la catch pas, ça finit mal :)
Il y a également de très nombreux deprecated, essentiellement sur les éléments suivants :
-
les fonctions attendant des chaines de caractères en entrée (strlen, substr, preg_replace, etc.) ne tolèrent plus la valeur
null
. https://php.watch/versions/8.1/internal-func-non-nullable-null-deprecation . C’est plutôt bien, mais dans notre code ce n’est pas toujours évident de savoir si l’arrivée denull
est du à une erreur ou si c’est tout à fait normal et dans ce cas là le cast avec(string) $var
. -
les méthodes étendues dans une classe héritée doivent avoir les typages des retours qui soient cohérents avec la méthode parente : et effectivement sur les classes internes à PHP des (promesses de) typages ont été ajoutés (notamment sur les itérateurs) : https://php.watch/versions/8.1/internal-method-return-types . Il faut compléter également chez nous ces typages. Cependant dans le cas du type
mixed
(introduit en PHP 8.0) il est préférable, si le peut (en connaissance de notre code) de réduire la portée du type à la place (string
,int
...). Sinon, tant que l’on reste compat avec php 7.4, un attribut#[\ReturnTypeWillChange]
qui cache le deprecated avec conscience est à ajouter.