Petit point PHP7
Matthieu Marcillaud <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Salutations, J'ai commencé un peu à tester SPIP avec PHP7 (rc6). Il y avait des erreurs attendues, particulièrement les classes que l'on peut instancier doivent utiliser la méthode __construct() obligatoirement, et non pas une méthode du même nom que la classe ; ce qui restait encore possible avant. Il y en a, des erreurs, qui l'étaient moins, particulièrement des changements apportés sur l'élément foreach http://php.net/manual/fr/migration70.incompatible.php#migration70.incompatible.foreach, particulièrement si on ajoute ou enlève des éléments du tableau à l'intérieur du foreach. Pas mal d'exemples de avant / après dans la rfc associée à ce changement https://wiki.php.net/rfc/php7_foreach Dans la plupart des cas, passer la valeur par référence dans le foreach corrige la situation. foreach ($tableau as $k => &$v). Il y a probablement quelques cas dans SPIP où il va falloir faire attention. On devrait pouvoir s'appuyer sur la lecture de http://www.exakat.io/reports/spip/index.html#ajax/Altering-Foreach-Without-Reference.html pour en vérifier certaines. Il y a aussi une fonction utilisée par les images typo qui n'est plus présente (cependant il y a déjà un fallback dans le code actuel) http://php.net/manual/fr/migration70.incompatible.php#migration70.incompatible.removed-functions.gd Et je vois qu'il reste des appels à des fonctions mysql_ ou constantes MYSQL_ alors que la lib mysql n'est plus présente. Donc, y a un petit travail de nettoyage / parcours à faire pour que tout soit propre. MM.