7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Magento

Magento-Beobachter verstehen

Read Time: 4 mins

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

Magento verfügt über ein ziemlich gut implementiertes Event/Beobachter-System. Bevor wir uns jedoch mit den Einzelheiten befassen, sollten wir sicherstellen, dass wir ein klares Verständnis der Entwurfsmuster haben, die in der Magento-Anwendung im Spiel sind.

Lassen Sie uns insbesondere über das Konzept des Ereignissystems sprechen, wie es funktioniert und was es ist. Obwohl wir in anderen Artikeln zu Tuts+ bestimmte Designmuster behandelt haben, haben wir dies im Kontext von Magento nicht getan.

Schauen wir uns zu diesem Zweck das Muster an, um ein klares Verständnis dafür zu erhalten, wie es ist, wie es funktioniert und wie es nützlich ist.

Entwurfsmuster als Ganzes

Im Laufe der Jahre wurde eine Vielzahl von Designmustern entwickelt. Aber was genau ist ein Designmuster?

Um Wikpedia zu zitieren:

"In der Softwareentwicklung ist ein Entwurfsmuster eine allgemeine wiederverwendbare Lösung für ein häufig auftretendes Problem in einem bestimmten Kontext des Softwareentwurfs."

Wenn wir das ein wenig reduzieren, bleibt uns Folgendes übrig: Ein Entwurfsmuster ist eine wiederverwendbare Lösung für ein häufiges Problem. Das ist eine ebenso perfekte Beschreibung.

Das Entwurfsmuster ist eine Vorlage, mit der eine Lösung erstellt werden kann, die zu Problemen derselben Art passt. Das Muster selbst ist nicht die eigentliche Lösung, sondern definiert, wie die Lösung als Richtlinie implementiert werden kann.

Ihre eigentliche Lösung, auch wenn das Festhalten an dem definierten Muster von meiner abweichen kann, solange beide den Richtlinien des Entwurfsmusters entsprechen.

Das Beobachtermuster

Nachdem wir nun wissen, was ein Entwurfsmuster wirklich ist, werfen wir einen Blick auf das Beobachtermuster.

Das Beobachtermuster wurde erstmals in der MVC-Architektur implementiert und hat sich als sehr wertvolle Ergänzung der Architektur erwiesen. Zum Teil aus diesem Grund haben eine enorme Anzahl von Bibliotheken das Muster im Laufe der Zeit implementiert, und wenn Sie eine Weile programmiert haben, ist es nicht unwahrscheinlich, dass Sie es bereits verwendet haben.

Genug Geschichte jetzt, schauen wir uns an, wie es funktioniert.

Etwas zu beobachten bedeutet, es zu betrachten oder seinen Zustand zu beobachten. Im technischen Kontext ist dies nicht anders. Beobachter beobachten per Definition etwas und in unserem Fall Ereignisse. Die Idee dabei ist, dass die Beobachter, die dieses Ereignis beobachten, ausgeführt werden, wenn ei Ereignis ausgelöst wird.

Im Allgemeinen wird das beobachtete Thema als Referenz weitergegeben, damit der Beobachter es aktualisieren oder auf Änderungen überprüfen kann.

Schauen Sie sich dieses Beispiel aus dem Magento-Code an:

In Ordnung, dies ist also die Validierungsmethode, wie sie in Ihrer Magento-Installation verfügbar ist. Aus Gründen der Übersichtlichkeit habe ich zwei Variablen durch ihre tatsächlichen Werte ersetzt. Sie können sehen, dass zwei Ereignisse hier versandt werden. catalog_product_validate_before und catalog_product_validate_after geben jeweils das Produktobjekt zusammen mit dem Versand an, damit der Beobachter etwas damit tun kann.

Und hier ist eine Beobachterklasse und ihre Methode. Diese Klasse und Methode werden mithilfe des Magento-Konfigurationssystems in das System eingebunden. Die Veranstaltung selbst wird der Beobachterklasse übergeben und das Produkt ist von der Veranstaltung aus erreichbar.

Ich werde das eigentliche Erstellen und Einbinden von Beobachter sowie das Erreichen der Themen im nächsten Beitrag ausführlicher behandeln.

Warum dieses Muster verwenden?

Eines der Hauptargumente für die Verwendung des Beobachtermuster oder seiner nahen Verwandten wie des Pub/Sub-Musters ist die Modularität, die es bietet.

Da sich alles in ein Ereignis einhängen kann, das ausgelöst wird, haben Sie nie einen starken Bezug dazu. Dies ist besonders nützlich in einer Umgebung, in der Sie immer mit Modulen arbeiten, die möglicherweise Dienste für ein bestimmtes Element bereitstellen, das möglicherweise verfügbar ist oder nicht.

Um Magento wieder zu verwenden, kann ich ein Modul erstellen, das Produktänderungen beobachtet, sowie ein Modul, das ich erstellt habe und das seine eigenen benutzerdefinierten Ereignisse auslöst. In einem regulären System wäre dieses Modul vom vorherigen Modul abhängig, aber mit einem Pub/Sub oder dem Beobachtermuster kann ich diese Abhängigkeit optional machen und nur dann das anwenden, was mein aktuelles Modul ist, wenn es verfügbar ist.

Was kommt als nächstes?

Nach dieser kurzen Auffrischung der genauen Entwurfsmuster sowie der genaueren Betrachtung des Beobachtermuster werde ich im nächsten Beitrag erläutern, wie es in Magento verwendet wird, wie Sie es in Ihren eigenen Modulen verwenden und bereitstellen können auch in Ihren eigenen Modulen, in die Sie sich von anderen einbinden können, oder für andere, in die Sie sich einhängen können.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.