✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Verwenden einer Registrierung, von Abonnenten und Diensten in WordPress

10

TL;DR: Ich finde die Verwendung einer Registrierung, von Abonnenten und Diensten sehr nützlich, wenn ich Backend-zentrierte Plugins und Dienstprogramme für WordPress baue. Dieser Beitrag zeigt, wie es geht.


Nach jahrelanger Beschäftigung mit Entwurfsmustern, objektorientierter Programmierung und WordPress ergeben sich zwangsläufig gemeinsame Wege zur Lösung von Problemen.

So haben wir zunächst objektorientierte Designmuster erhalten, also ist dies vielleicht eine WordPress-zentrierte Variante davon.

Obwohl ich in früheren Artikeln (und solchen, die noch nicht einmal so alt sind) über Dinge wie Registrierungen geschrieben habe, ist es nie eine schlechte Idee, dasselbe Thema noch einmal aufzugreifen, besonders wenn es etwas gibt, das der vorherigen Einstellung hinzugefügt werden kann.

Eine Registrierung, Abonnenten und Dienste

Alles, was im Folgenden beschrieben wird, ist im Kontext des WordPress-Plugins zu verstehen. Das heißt, dies ist nicht als Möglichkeit zu verstehen, mit anderen Frameworks, Sprachen, Anwendungen zu arbeiten oder es mit anderen Mustern zu verwenden.

Denken Sie daran, wenn Sie dies lesen.


Wie auch immer, die allgemeine Idee hinter der Kombination dieser Objekttypen ist die folgende:

  1. Die Registry verwaltet alle Abonnenten,
  2. Die Abonnenten hören auf Hooks innerhalb von WordPress (die existierenden oder sogar benutzerdefinierten Hooks),
  3. Die Dienste erledigen die eigentliche Arbeit, wenn der Abonnent sie versendet.

Der Zweck besteht darin, dass es einen einzigen Ort gibt, an dem die Klassen registriert werden, die für das Versenden der Arbeit verantwortlich sind. Das ist es.

Darüber hinaus macht es dies auch einfach, die Dinge getrennt zu halten, sodass es viel einfacher ist, wenn Sie Ihre Dienste isoliert testen möchten, da sie nicht unbedingt eng mit WordPress gekoppelt sind. Und wenn ja, dann können Sie die Daten simulieren, die an eine bestimmte Funktion übergeben werden müssen, und dann das Ergebnis auswerten.

Dies ist jedoch kein Artikel über das Testen, also zurück zu den eigentlichen Klassen.

Registrierung

Per Definition ist der Zweck einer Registrierung, den Überblick zu behalten. Wenn es darum geht, dieses Muster in WordPress zu implementieren, besteht die Idee darin, dass die Registrierung die Abonnenten verfolgen kann (was ich später in diesem Artikel definieren werde).

Verwenden einer Registrierung, von Abonnenten und Diensten in WordPress

Foto von Denny Müller auf Unsplash

Darüber hinaus besteht die Idee darin, dass zu gegebener Zeit, die wahrscheinlich anders sein wird, je nachdem, wie Ihr Plugin aufgebaut ist, alle Abonnenten instanziiert werden. Bis zu diesem Punkt werden Sie es jedoch wahrscheinlich früh im WordPress-Lebenszyklus tun wollen.

Hier ist ein Beispiel für den Code zum Registrieren der Abonnenten:

private $subscribers = [ AssetSubscriber::class, // ... DeletedUserSubscriber::class, ];

Als nächstes ist hier eine Funktion zum Instanziieren der Abonnenten.

Diese Blöcke können je nach Bedarf Teil derselben Funktion oder separat sein.

Abonnenten

Wie bereits erwähnt, sind Abonnenten der Weg zu:

  1. Hören Sie auf einen bestimmten Haken in WordPress
  2. Senden Sie einen Dienst, um die Arbeit zu erledigen, die für den angegebenen Hook vorgesehen ist.

Nehmen Sie also für einen Moment an, Sie möchten etwas tun, wenn ein Benutzer gelöscht wird. Sie möchten einen Dienst über den Abonnenten instanziieren, wenn dieser Hook auftritt.

Verwenden einer Registrierung, von Abonnenten und Diensten in WordPress

Foto von Lee Campbell auf Unsplash

Als Beispiel:

Beachten Sie, dass der Abonnent den Dienst kennt (obwohl er keine Abhängigkeit von ihm aufrechterhält, da er lediglich ein Vermittler zwischen WordPress und dem Dienst ist) und den Haken für den Dienst angibt, den er instanziiert.

Dienstleistungen

Schließlich sind Dienste die Objekte, die in einem Plugin die ganze schwere Arbeit erledigen. Das heißt, wenn sie in die Datenbank, das Dateisystem, das Netzwerk, Prozessdaten usw. lesen oder schreiben müssen, geschieht dies alles in ihrem Kontext.

Verwenden einer Registrierung, von Abonnenten und Diensten in WordPress

Foto von Erik Mclean auf Unsplash

Sie kennen vielleicht andere Klassen, vielleicht auch nicht. Sie können eine Schnittstelle oder eine abstrakte Klasse implementieren oder nicht. Das sprengt wirklich den Rahmen dieses Beitrags. Aber der Punkt ist, dass Sie, wenn Sie den Haken von oben als Beispiel verwenden, wenn Sie etwas tun möchten, wenn ein Benutzer gelöscht wird, dies innerhalb des Dienstes tun.

Zum Beispiel:

class DeletedUserService { public function add(string $hook) { add_action($hook, [$this, 'deletedUser'], 99, 1); } public function deletedUser(int $userId) { $user = get_userdata($userId); if (false === $user) { return; } // Do work with the user that's being deleted. } }

Und das ist das Ende. Sobald der Dienst ausgeführt wird, wird die Kontrolle an WordPress zurückgegeben und die Anwendung wird die Ausführung wie gewohnt fortsetzen.

Jetzt alle zusammen

Angenommen, Sie haben eine Bootstrap-Datei für Ihr Plugin, was die meisten tun, da hier das erforderliche Plugin definiert wird, ein Autoloader erforderlich ist und die Instanziierung des Plugins selbst erfolgt.

Wenn Sie an einer umfassenderen Lösung interessiert sind, die zeigt, wie der obige Code in einer praktischen Umgebung verwendet wird, lassen Sie es mich auf Twitter wissen. Auf diese Weise weiß ich, dass ich weitermachen und einen weiteren Artikel verfassen muss. 🙂

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen