Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Utilisation du modèle de registre dans WordPress

12

J’ai eu quelques conversations avec divers amis et d’autres sur Twitter à propos de la notion de variables globales dans les langages de programmation. Pour ceux qui débutent dans la programmation ou qui ne savent pas pourquoi ils sont mauvais :

L’utilisation de variables globales rend le logiciel plus difficile à lire et à comprendre. Étant donné que n’importe quel code n’importe où dans le programme peut modifier la valeur de la variable à tout moment, comprendre l’utilisation de la variable peut impliquer de comprendre une grande partie du programme.

Cela ne veut pas dire qu’ils n’ont pas leur utilité, mais si vous êtes intéressé par la programmation orientée objet (en particulier dans un environnement WordPress où vous allez utiliser PHP), il est important de comprendre de meilleures alternatives que les variables globales.

Autrement dit, il existe des moyens de travailler avec la transmission de données autour de votre application sans avoir besoin de variables globales. Et l’un de ces moyens est le modèle de registre.

Le modèle de registre dans WordPress

Tout d’abord, notez que les modèles de conception transcendent tout modèle particulier donné. Tant qu’un langage offre les concepts d’objets (ou même d’abstractions), alors il est possible d’implémenter le modèle.

Mais pourquoi s’embêter à l’utiliser ?

Utilisation du modèle de registre dans WordPress

Photo de Samuel Zeller sur Unsplash

En bref, il fournit un moyen orienté objet de transmettre des informations autour de votre application sans avoir besoin de variables globales. Des éléments tels que les conteneurs d’injection de dépendances sont également utiles pour cela, mais ils dépassent le cadre de cet article. Je dirais également qu’il y a des moments où ils peuvent être exagérés dans le contexte de petits plugins.

Implémentation du modèle

Cela dit, comment pouvons-nous implémenter le modèle de registre dans WordPress, puis en tirer parti tout au long de notre travail? Examinons d’ abord la structure de base du modèle :

Notez que sa mise en œuvre est assez simple :

  1. La classe contient un seul tableau en tant que propriété privée.
  2. Les données sont ajoutées au tableau avec un ID spécifique.
  3. Les données peuvent être récupérées à partir du modèle avec l’ID.

Vous pouvez même faire passer ce modèle particulier au niveau supérieur s’il n’accepte qu’une classe d’un certain type (comme un AbstractEvent, par exemple), puis invoquer automatiquement une fonction sur la classe chaque fois qu’elle est transmise (ou récupérée) du registre.

Mais cela entre dans une implémentation plus complexe que j’aimerais pour ce post.

Configuration du Registre

En raison de la nature du système de hook de WordPress, il existe une manière particulière de configurer le registre, puis de l’enregistrer auprès de WordPress.

Disons que vous travaillez avec un plugin. Dans le fichier d’amorçage du plugin, faites quelque chose comme ceci :

Cela crée le registre, puis crée un filtre correspondant que nous pouvons utiliser plus tard dans le plugin pour récupérer le registre et donc d’autres objets qu’il maintient.

Utilisation du registre

Pour ajouter un objet au registre, appelez la fonction add et transmettez un ID unique et une instance de l’objet. Notez que notre implémentation actuelle supprimera toutes les instances précédentes d’un objet qui a la même clé et la remplacera par tout ce que nous lui transmettrons.

De là, vous pouvez ensuite récupérer les objets que vous aviez stockés dans le registre :

Et vous pouvez les utiliser comme vous le feriez de toute autre manière. Mais cela évite le besoin d’utiliser des singletons, des variables globales ou d’autres choses dangereuses.

Un mot sur la testabilité

Un autre avantage que je trouve avec l’implémentation de ce modèle est qu’il vous permet non seulement d’écrire plus facilement des tests unitaires sur lui, mais il vous donne également la possibilité d’écrire des tests sur les objets qu’il peut contenir.

J’entends par là que vous pouvez écrire vos classes de manière plus indépendante de WordPress, séparant ainsi la logique du domaine de l’application principale et les rendant plus représentatives des données qu’elles sont censées conserver.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More