J’ai fait sauter toutes les variables globales du code, hormis celles utilisées sur les pages de l’administration, pour lesquelles j’hésite un peu à aller plus loin — il y a de quoi, mais je ne suis pas certain de la nécessité de faire ça, il faut que j’y réfléchisse…
Exit les global $truc_bidule;
et autres $GLOBALS['truc_bidule'] = …;
dans le code.
Bienvenue les dcCore::app()->truc_bidule
, dcCore::app()->admin->truc_bidule
, ou encore dcCore::app()->public->truc_bidule
1.
C’est plus élégant je trouve d’utiliser des objets que de s’appuyer sur le système de portée du langage.
Pour l’instant je gère le stockage et la lecture de ces variables, soit au niveau du cœur (dcCore
), soit en fonction du contexte (dcAdmin
et dcPublic
), via des méthodes magiques (__set()
, __get()
, __isset()
et __unset()
) ; je pense que ça devrait suffire pour l’instant, même si ça empêche de mettre en place un typage fort d’icelles.
Je me repose aussi la question de la pertinence de conserver les vieux thèmes (Blowup et Blue Silence) dans la distribution de la 2.24 ou d’une future à suivre…
-
Oui je sais, c’est plus long à écrire, mais c’est plus robuste, de mon point de vue. ↩︎
1 De te2dy -
Questions d’un ignorant en la matière :
Au-delà de l’« élégance » de l’utilisation de
dcCore::app()->truc_bidule
à la place des variables globales, est-ce que ça a une utilité côté performances ?J’ai cru voir ici et là un backslash avant
dcCore::app()
, comme ça :\dcCore::app()
. Est-ce que ça a une utilité ? J’ai l’impression que ça fonctionne de la même façon, avec ou sans, dans le fichierpublic.php
de mon thème. 🤷♂️2 De Franck -
Côté performance je pense que passer par la nouvelle forme doit être plus couteux dans l’absolu, mais je pense aussi que PHP est assez malin pour mettre en cache une propriété souvent utilisée ; l’un dans l’autre ça ne doit pas trop se sentir.
Quant au backslash il a une utilité lorsqu’on utilise les espaces de nom, comme dans les thèmes par exemple.
dcCore::app()
et\dcCore::app()
fonctionnent de la même manière si on ne définit pas d’espace de nom.À noter : l’usage d’un espace de nom est très fortement recommandé pour les thèmes pour permettre leur clonage sans provoquer d’erreurs ensuite.
3 De te2dy -
Merci pour cette réponse ! J’ai bien fait de poser ces questions car j’imaginais exactement le contraire pour les deux. 🤷♂️