pour mettre en avant la nouvelle syntaxe des fichiers de langues (avec un return direct), nettement plus facile et qui sera la seule supportée en SPIP 6.0. Ca laisse un peu de temps, mais autant donner des bonnes habitudes.
Merci, c’est très utile.
Tu vois, je ne m’étais même pas rendu compte de la transformation de la variable globale en fonction à appeller, alors que je m’occupe d’abord de la traduction.
Apparamment je ne « fais » pas assez de SPIP ce dernier temps.
Est-ce qu’il y a d’autres modification récentes peut-être encore plus subtiles dans le système de gestion de langues, par exemple en ce qui concerne le fonctionnement de trad.spip.net ?
:-)k++
pas à ma connaissance, et trad.spip.net gère cela de manière transparente. Et comme l’ancienne syntaxe est encore supportée et que de nombreux plugins l’utilisent encore, c’est assez normale de pas avoir vu, sauf à lire attentivement les billet de release.
je dirais OUI, car au lus récents sur ce sujet, c’est nécessaire dès lors qu’il y a exécution d’un code et non seulement des déclarations. Tant l’ancienne que la nouvelle syntaxe le nécessitent.
Sauf qu’on peut considérer que le contenu des fichiers de langue, c’est déclaratif. C’est pas tant du code que de la donnée …
L’exécution de code, c’est à considérer au « runtime », c’est plutôt des echo, die(), exit(), headers(), … (c’est pas exhaustif), directement dans le fichier, pas dans le corps d’une fonction ou d’une méthode de classe
Certes, mais dire ça c’est une forme de jeu sur les mots.
Avec if (!defined('_ECRIRE_INC_VERSION')) { return; }, il s’agit de sécurité, pas de nommage (« déclaratif » ou pas) ni de respect des standards de l’esthétique du codage.
Alors indépendamment de comment on qualifie « return $val » ou « $var=$val », il serait utile de préciser quand il faut énoncer ou pas le mantra if (!defined('_ECRIRE_INC_VERSION')) { return; } ?
Je te dirais bien jamais… vu le peu d’utilité de la chose… c’est très historique… mais pour te répondre,
un fichier qui ne fait QUE des déclarations (de classes, de fonctions) n’a pas besoin de ça.
un fichier qui ne fait QUE retourner un tableau / un objet (comme ici langues), sans utiliser de variables extérieures ($_GET par exemple) n’en a pas besoin…
un fichier qui exécute directement du code (comme souvent des fichiers xx_options.php) pourrait en avoir besoin.
Oui, quand on était limité par les include et require de PHP3, je crois. Depuis, c’est juste devenu un cargo-culte, un dogme…
Y a pas d’obligation ! vous pouvez les laisser si vous voulez. Personne n’a dit, me semble-t-il, que c’est une règle absolue à respecter militairement ! C’est aux devs de décider et de savoir ce qu’il se passe dans leur fichier
Cette syntaxe est valide à partir de SPIP 4.1. Donc si tu veux être compatible 4.0 (note que cette branche n’est plus maintenue), il faut conserver l’ancienne écriture.
Je pense assurément que quitte à modifier des articles de SPIP ou Programmer, il faut adapter le format d’écriture à comme le font un peu les articles de doc de PHP : mettre juste la syntaxe valide actuelle dans le contenu de l’article… et faire une section Historique à la fin de l’article uniquement avec les changements qu’il y a eu et les versions.
Sinon on se retrouve avec plein de « depuis 1.9 » ou « avant 2.1 » un peu partout, et c’est pas le plus lisible je trouve
Je vais essayer de mettre à jour ce soir.
Une question : logiquement la partie « historique » on la met complètement à la fin, après la partie « voir aussi » ?
Déprécier en SPIP 5.0, supprimé en 6.0 … en fait je pense que ça m’ennuie que ça dure autant…
@maintenance : est-ce qu’on pourrait les déprécier ces globales dès SPIP 4.4 et les supprimer en 5.0 ?
Je rappelle que cette nouvelle syntaxe est valide dès SPIP 4.1 (4.1.0 est sortie le 25 mars 2022).
Est-ce trop court ou pas ?
et j’imagine qu’on peut facilement écrire un script bash, qui grep tout ce qui est compatible 4.1 ou plus et modifie les fichiers, vu que c’est juste remplacer un $GLOBALS[xxx] = par un return.
On scinderait pas par contre le sujet ? pour mettre cela dans la catégorie maintenance