Adapter son code pour la 2.24 n° 2

On commence aujourd’hui avec une petite mise en bouche, la variable $core, et son équivalent $GLOBALS[‘core’].

Depuis la 2.23 on peut, et même il est vivement recommandé d’utiliser à la place dcCore::app() qui est disponible partout, tout le temps et qui permet au passage d’ignorer superbement la variable $core fournie dans certaines méthodes et fonctions de votre code.

En résumé, faites une recherche avec l’expression régulière :

(\\?\$core|\\?\$GLOBALS\['core'\]|\\?\$this->core)

Ou si vous ne savez pas comment faire, les expressions suivantes1 :

  1. \$core
  2. $core
  3. \$GLOBALS['core']
  4. $GLOBALS['core']
  5. \$this->core
  6. $this->core

Et remplacez les correspondances2 trouvées par :

dcCore::app().

Attention : ne touchez à rien dans les paramètres des fonctions/méthodes, ça n’est pas utile et ça provoquerait des erreurs.

Un exemple, $core est présent lignes 1 (paramètre de fonction) et 8 :

    public static function adminDashboardFavorites($core, $favs)
    {
        $favs->register('Typo', [
            'title'       => __('Typographic replacements'),
            'url'         => 'plugin.php?p=typo',
            'small-icon'  => [urldecode(dcPage::getPF('typo/icon.svg')), urldecode(dcPage::getPF('typo/icon-dark.svg'))],
            'large-icon'  => [urldecode(dcPage::getPF('typo/icon.svg')), urldecode(dcPage::getPF('typo/icon-dark.svg'))],
            'permissions' => $core->auth->makePermissions([
                dcAuth::PERMISSION_CONTENT_ADMIN,
            ]),
        ]);
    }

Je ne touche à rien ligne 1, par contre je remplace ligne 8 :

    public static function adminDashboardFavorites($core, $favs)
    {
        $favs->register('Typo', [
            'title'       => __('Typographic replacements'),
            'url'         => 'plugin.php?p=typo',
            'small-icon'  => [urldecode(dcPage::getPF('typo/icon.svg')), urldecode(dcPage::getPF('typo/icon-dark.svg'))],
            'large-icon'  => [urldecode(dcPage::getPF('typo/icon.svg')), urldecode(dcPage::getPF('typo/icon-dark.svg'))],
            'permissions' => dcCore::app()->auth->makePermissions([
                dcAuth::PERMISSION_CONTENT_ADMIN,
            ]),
        ]);
    }

Si jamais vous aviez des :

global $core;

Voire, si vous avez remplacé aussi ces lignes en :

global dcCore::app();

Alors vous pouvez les supprimer.

Vous pouvez d’ailleurs le faire dès maintenant — si vous testez avec une version 2.23.? — et indiquer que votre plugin (ou votre thème) nécessite3 a minima la version 2.23, avec un :

        'requires' => [['core', '2.23']],

Mais si vous allez poursuivre avec moi — ou si vous testez avec une version 2.24-dev — alors autant mettre immédiatement ceci :

        'requires' => [['core', '2.24']],

Ça vous évitera d’avoir à le faire plus tard.

Notez que si vous voulez tester vos modifications de ce jour en situation réelle, avec une 2.23.1 par exemple, alors conservez 2.23 pour la dépendance, vous ferez la modification une fois que vos tests seront concluants.


Et c’est là que vous vous dites : Ah mais si le $core que j’ai en paramètre de mes fonctions ne sert plus à rien, on pourrait l’enlever ?.

Deux réflexions :

  1. Si c’est du code interne chez vous, alors vous pouvez faire le nécessaire, à savoir virer ce paramètre de la fonction et le virer partout où la fonction est appelée. N’oubliez pas de tester tout de même ;-)

  2. Si c’est du code externe, comme par exemple une fonction de rappel d’un behavior, alors on en causera plus tard, c’est un peu prématuré d’y toucher à ce stade.


N’hésitez pas à commenter et critiquer — il se peut que je sois passé sur des trucs qui me paraissent évidents alors que ce n’est pas le cas pour tout le monde —, j’amenderai ce billet si nécessaire en fonction de vos retours !


  1. La forme avec l’antislash au début (\) est utile pour les thèmes (et parfois les plugins) qui utilisent des espaces de nom. ↩︎

  2. Je pense que vous ne devriez pas en trouver beaucoup en ce qui concerne la 5e et la 6e ↩︎

  3. À modifier ou à insérer dans le fichier _define.php↩︎

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/15504

Haut de page