[spip-dev] Petit point PHP7

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.

Ce petit point est corrigé.
J'ai pas vu d'autres problèmes survenir depuis. Donc c'est cool.

MM.