La chasse aux variables globales

Résultat de la recherche faite dans tout le code de Dotclear ce matin
Searching 461 files for "(\$GLOBALS\['(.*)'\]|global \$(.*))" (regex, case sensitive)

/inc/core_error.php:
    9: global $code, $summary, $message;

/inc/prepend.php:
  443:     global $__shutdown;

/inc/admin/class.dc.admin.php:
  129               * @deprecated Since 2.23, use dcCore::app()->lang instead
  130               */
  131:             $GLOBALS['_lang'] = &dcCore::app()->lang;
  ...
  205               * @deprecated Since 2.23, use dcCore::app()->menu instead
  206               */
  207:             $GLOBALS['_menu'] = dcCore::app()->menu;
  ...
  420          // Obsolete since 2.24, may be removed in near future
  421:         $GLOBALS['p_url'] = $value;

/inc/admin/lib.dc.notices.php:
   53          // Update transition from 2.22 to 2.23
   54          if (version_compare(DC_VERSION, '2.23', '<')) {
   55:             global $core;
   56          } else {
   57              $core = dcCore::app();
   ..
  215          // Update transition from 2.22 to 2.23
  216          if (version_compare(DC_VERSION, '2.23', '<')) {
  217:             global $core;
  218          } else {
  219              $core = dcCore::app();

/inc/core/class.dc.core.php:
  370               * @deprecated Since 2.23, use dcCore::app()->resources instead
  371               */
  372:             $GLOBALS['__resources'] = &$this->resources;

/inc/libs/clearbricks/_common.php:
   39           * @deprecated since 1.3, use Clearbricks::lib()->autoload() instead
   40           */
   41:         $GLOBALS['__autoload'] = &$this->stack;

/inc/libs/clearbricks/common/lib.l10n.php:
  151           * Used by generated *.lang.php in old 3rd party modules
  152           */
  153:         $GLOBALS['__l10n'] = &self::$locales;
  ...
  158           * Used by generated *.lang.php in old 3rd party modules
  159           */
  160:         $GLOBALS['__l10n_files'] = &self::$files;

/inc/public/class.dc.public.php:
  113           * @deprecated Since 2.24
  114           */
  115:         $GLOBALS['_page_number'] = 0;
  ...
  140           * @deprecated Since 2.23, use dcCore::app()->ctx instead
  141           */
  142:         $GLOBALS['_ctx'] = dcCore::app()->ctx;
  ...
  157           * @deprecated Since 2.23, use dcCore::app()->lang instead
  158           */
  159:         $GLOBALS['_lang'] = &dcCore::app()->lang;
  ...
  224           * @deprecated Since 2.23, use dcCore::app()->cache['mod_files'] instead
  225           */
  226:         $GLOBALS['mod_files'] = dcCore::app()->cache['mod_files'];
  ...
  233           * @deprecated Since 2.23, use dcCore::app()->cache['mod_ts'] instead
  234           */
  235:         $GLOBALS['mod_ts'] = dcCore::app()->cache['mod_ts'];
  ...
  326  
  327          // Obsolete since 2.24, may be removed in near future
  328:         $GLOBALS['_page_number'] = $value;

Pour résumer :

  • /inc/core_error.php, on va laisser en place, cette page n’est utilisée qu’en cas d’erreur de démarrage de Dotclear, pas grand chose à préserver ici :

    • $code
    • $summary
    • $message
  • /inc/prepend.php, liste des fonctions de rappel appelées à la fermeture1, pas besoin d’y toucher à ce stade :

    • $__shutdown
  • /inc/admin/class.dc.admin.php, conservées pour assurer la compatibilité avec du vieux code :

    • $_lang : utiliser dcCore::app()->lang
    • $_menu : utiliser dcCore::app()->menu
    • $p_url : utiliser dcCore::app()->admin->getPageURL()2
  • /inc/admin/lib.dc.notices.php, conservée pour assurer la transition entre la 2.23 et la 2.24 (au moment de la mise à jour)

    • $core : utiliser dcCore::app()
  • /inc/core/class.dc.core.php, conservée pour assurer la compatibilité avec du vieux code :

    • $__resources : utiliser dcCore::app()->resources
  • /inc/libs/clearbricks/_common.php, conservée pour assurer la compatibilité avec du vieux code :

    • $__autoload : utiliser Clearbricks::lib()->autoload()
  • /inc/libs/clearbricks/common/lib.l10n.php, je n’ai aucun exemple d’utilisation de ces deux variables à part dans les fichiers compilés3 à partir des fichiers .po, je vais laisser en place pour l’instant :

    • $__l10n
    • $__l10n_files
  • /inc/public/class.dc.public.php, conservées pour assurer la compatibilité avec du vieux code :

    • $_page_number : utiliser dcCore::app()->public->setPageNumber() et dcCore::app()->public->getPageNumber()
    • $_ctx : utiliser dcCore::app()->ctx
    • $_lang : utiliser dcCore::app()->lang
    • $mod_files : utiliser dcCore::app()->cache['mod_files']
    • $mod_ts : utiliser dcCore::app()->cache['mod_ts']

Voilà déjà une première liste pour mettre à jour vos plugins et thèmes4 si besoin, et qui rend le code un peu plus propre :-)


  1. Aucun exemple d’utilisation dans le code que j’ai sous la main et je n’ai pas eu vent d’un usage par quelqu’un depuis des années, si quelqu’un a des infos ? ↩︎

  2. Et éventuellement dcCore::app()->setPageURL(), mais vous ne devriez pas en avoir l’usage normalement. ↩︎

  3. À ce sujet il n’est pas impossible que je revienne un jour sur la gestion des traductions. ↩︎

  4. N’oubliez pas, pour les thèmes, et si vous utilisez — ce que vous devriez faire — un espace de nom dans votre code PHP, de préfixer dcCore et Clearbricks d’un \ ↩︎

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15481

Haut de page