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

Découplage de la logique de domaine dans WordPress

10

N’oubliez pas que WordPress utilise le modèle de conception piloté par les événements et bien que nous nous référions souvent aux actions et aux filtres, le concept se résume à des crochets. Le flux de contrôle à travers le programme ressemble à ceci :

  1. Exécuter le programme,
  2. Chaque fois que le programme tombe sur un crochet (dans WordPress, nous verrons do_actionou apply_filters), parcourez tous les crochets enregistrés,
  3. Renvoyez le contrôle au programme,
  4. Exécuter jusqu’au bout.

Ce n’est pas complètement différent du modèle Publisher/Subscriber (ou PubSub, pour faire court) mais il y a une différence clé : le modèle Event-Driven signale simplement que quelque chose s’est produit et s’il y a des crochets, ils se déclencheront. Le modèle PubSub dira à un abonné enregistré de faire quelque chose.

Quoi qu’il en soit, revenons aux crochets dans WordPress. Conserver les deux concepts d’hameçons que nous avons peut être plus facilement fait en les pensant comme ceci :

  • Les actions servent à faire quelque chose,
  • Les filtres sont destinés au traitement des données.

Si vous cherchez à aborder le développement WordPress de manière orientée objet, coupler étroitement votre code au cœur de WordPress en enregistrant vos classes via des hooks à l’application principale n’est pas une bonne idée.

En d’autres termes, n’enregistrez pas votre logique métier avec WordPress. Gardez-les séparés. Voici un test décisif pour savoir si votre travail est étroitement lié à WordPress : si vous ne pouvez pas exécuter un test unitaire sur votre classe sans charger WordPress, il est étroitement lié.

Alors, quelle est la solution ? Délégation.

Logique de domaine dans WordPress

La logique de domaine et la logique métier sont interchangeables en ce qui me concerne, donc si vous avez lu des articles précédents à ce sujet et que j’en ai parlé de différentes manières, vous savez pourquoi.

Découplage de la logique de domaine dans WordPress

Le crédit

Ensuite, l’idée de déléguer la logique de WordPress à une classe pour la logique de domaine dans WordPress est réalisée par une classe intermédiaire qui est responsable de ce qui suit :

  1. S’abonner à un crochet,
  2. Déléguer le travail à une classe.

Je sais que les cours sont censés faire «bien une chose », mais que se passe-t-il si cette seule chose est la délégation ?

confier (pouvoirs, fonctions, etc.) à un autre en qualité de mandataire

le dictionnaire

Et pour valider correctement une fonctionnalité à un autre agent ou, dans notre cas, à une classe, vous devez avoir la capacité de savoir ce que vous déléguez. Parfois, pour faire une chose, vous devez connaître plusieurs informations.

Alors, à quoi cela ressemble-t-il pratiquement? Imaginez que vous ayez un [AbstractSubscriber](https://github.com/tommcfarlin/remove-empty-shortcodes/blob/master/src/Subscriber/AbstractSubscriber.php)pour prendre le nom d’un crochet dans son constructeur :

Et puis une fois que c’est fait, la loadfonction enverra le travail à une classe responsable de faire le traitement.

Prenez, par exemple, ce code de Remove Empty Shortcodes :

Une classe s’abonne à un événement particulier, tel que [the_content](https://developer.wordpress.org/reference/functions/the_content/), puis délègue le travail à la classe de post-traitement du contenu.

Cela permet littéralement au fichier d’amorçage du plugin d’instancier le délégué. Le délégué se connecte ensuite à WordPress et lorsque WordPress arrive au bon point d’exécution, le délégué envoie la responsabilité à la classe responsable du traitement.

Cette architecture entière est non seulement complètement réutilisable (voir l’utilisation d’une classe abstraite ci-dessus), mais elle nous permet de découpler la logique de domaine de WordPress et de la tester de manière isolée.

En savoir plus sur la séparation des préoccupations

J’ai écrit d’autres articles sur la séparation des préoccupations :

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