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

Verwenden des Registrierungsmusters in WordPress

3

Ich habe ein paar Gespräche mit verschiedenen Freunden und anderen auf Twitter über den Begriff der globalen Variablen in Programmiersprachen geführt. Für diejenigen, die neu in der Programmierung sind oder sich nicht sicher sind, warum sie schlecht sind:

Die Verwendung globaler Variablen erschwert das Lesen und Verstehen von Software. Da jeder Code an beliebiger Stelle im Programm den Wert der Variablen jederzeit ändern kann, kann das Verständnis der Verwendung der Variablen das Verständnis eines großen Teils des Programms erfordern.

Das soll nicht heißen, dass sie keinen Nutzen haben, aber wenn Sie an objektorientierter Programmierung interessiert sind (insbesondere in einer WordPress-Umgebung, in der Sie PHP verwenden werden), dann ist es wichtig, einige bessere Alternativen zu verstehen als globale Variablen.

Das heißt, es gibt Möglichkeiten, mit der Weitergabe von Daten in Ihrer Anwendung zu arbeiten, ohne dass globale Variablen erforderlich sind. Und ein solcher Weg ist das Registrierungsmuster.

Das Registrierungsmuster in WordPress

Beachten Sie zunächst, dass Designmuster über jedes bestimmte Muster hinausgehen. Solange eine Sprache die Konzepte von Objekten (oder sogar Abstraktionen) anbietet, ist es möglich, das Muster zu implementieren.

Aber warum sich die Mühe machen, dies zu verwenden?

Verwenden des Registrierungsmusters in WordPress

Foto von Samuel Zeller auf Unsplash

Kurz gesagt, es bietet eine objektorientierte Möglichkeit, Informationen in Ihrer Anwendung herumzureichen, ohne dass globale Variablen erforderlich sind. Dinge wie Dependency-Injection-Container sind auch gut dafür, aber sie würden den Rahmen dieses Beitrags sprengen. Ich würde auch argumentieren, dass es Zeiten gibt, in denen sie im Zusammenhang mit kleinen Plugins übertrieben sein können.

Implementieren des Musters

Wie können wir das Registrierungsmuster in WordPress implementieren und es dann während unserer gesamten Arbeit nutzen? Schauen wir uns zunächst die Grundstruktur des Musters an :

Beachten Sie, dass die Implementierung recht einfach ist:

  1. Die Klasse enthält ein einzelnes Array als private Eigenschaft.
  2. Daten werden dem Array mit einer bestimmten ID hinzugefügt.
  3. Daten können aus dem Muster mit der ID abgerufen werden.

Sie könnten dieses spezielle Muster sogar auf die nächste Ebene bringen, wenn es nur eine Klasse eines bestimmten Typs (wie beispielsweise ein AbstractEvent) akzeptiert und dann automatisch eine Funktion für die Klasse aufruft, wenn sie von der Registrierung übergeben (oder abgerufen) wird.

Aber das kommt in eine komplexere Implementierung, die ich für diesen Beitrag haben möchte.

Einrichten der Registrierung

Aufgrund der Art des Hook-Systems von WordPress muss die Registrierung auf eine bestimmte Weise eingerichtet und dann bei WordPress registriert werden.

Nehmen wir an, Sie arbeiten mit einem Plugin. Gehen Sie in der Bootstrap-Datei des Plugins so vor:

Dies erstellt die Registrierung und erstellt dann einen entsprechenden Filter, den wir später im Plugin verwenden können, um die Registrierung und damit andere Objekte, die es verwaltet, abzurufen.

Verwenden der Registrierung

Rufen Sie zum Hinzufügen eines Objekts zur Registrierung die Funktion add auf und übergeben Sie eine eindeutige ID und eine Instanz des Objekts. Beachten Sie, dass unsere aktuelle Implementierung alle vorherigen Instanzen eines Objekts mit demselben Schlüssel vernichten und durch das ersetzen wird, was wir ihm übergeben.

Von dort aus können Sie dann die Objekte abrufen, die Sie in der Registrierung gespeichert haben:

Und Sie können sie genauso verwenden, wie oyu es auf andere Weise tun würde. Dies vermeidet jedoch die Verwendung von Singletons, globalen Variablen oder anderen gefährlichen Dingen.

Ein Wort zur Testbarkeit

Ein weiterer Vorteil, den ich bei der Implementierung dieses Musters finde, ist, dass es Ihnen nicht nur ermöglicht, Unit-Tests dafür einfacher zu schreiben, sondern es Ihnen auch die Möglichkeit gibt, Tests für die Objekte zu schreiben, die es enthalten kann.

Damit meine ich, dass Sie Ihre Klassen unabhängiger von WordPress schreiben können, wodurch die Domänenlogik von der Kernanwendung getrennt und sie repräsentativer für die Daten werden, die sie verwalten sollen.

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