Magento: Event/Observer

15
Flexible Schnittstellen durch Event/Observer

description

Flexible Schnittstellen durch Event/Observer in Magento

Transcript of Magento: Event/Observer

Page 1: Magento: Event/Observer

Flexible Schnittstellen durch Event/Observer

Page 2: Magento: Event/Observer

Agenda

•  Event/Observer – Allgemein

•  Event/Observer – In Magento

•  Praxisbeispiel

•  Diskussion / Austausch / Eigene Erfahrungen

04.11.2010 ITABS GbR – Rouven Alexander Rieker 2

Page 3: Magento: Event/Observer

EVENT/OBSERVER – ALLGEMEIN

3 ITABS GbR – Rouven Alexander Rieker 04.11.2010

Page 4: Magento: Event/Observer

Definition

Das Subject/Observer Pattern definiert eine Eins-zu-n-Abhängigkeit

zwischen einem Subjekt und beliebig vielen Beobachtern. Wenn

sich der Zustand des Objekts ändert, werden die abhängigen

Objekte automatisch benachrichtigt.

Buch-Quelle: PHP Design Patterns

ITABS GbR – Rouven Alexander Rieker 4 04.11.2010

Page 5: Magento: Event/Observer

Fakten

•  Geringere Abhängigkeit von Modulen untereinander

•  Updatesichere Entwicklung möglich, da gegen Schnittstelle

entwickelt wird

•  Objekte können miteinander interagieren ohne direkt abhängig

voneinander zu sein

•  Objekt können zur Laufzeit „manipuliert“ werden

•  Eignen sich nicht für Veränderung des Kerns, sondern für die

Implementierung neuer Funktionen

ITABS GbR – Rouven Alexander Rieker 5 04.11.2010

Page 6: Magento: Event/Observer

EVENT/OBSERVER – IN MAGENTO

6 ITABS GbR – Rouven Alexander Rieker 04.11.2010

Page 7: Magento: Event/Observer

Event/Observer in Magento?

•  Derzeit 298 Events im Magento-Core – Formatierte Liste herunterladbar unter: downloads.itabs.de/public/magento/magento-events-1.4.1.1.xls

•  Eigene Events in eigenen Modulen sind problemlos möglich –  Möglichkeiten schaffen, die Abhängigkeiten der eigenen Modulen

von anderen zu reduzieren

•  Definition eines Events geschieht in der config.xml im Abschnitt <global>, <frontend> oder <adminhtml>

•  Werden im „Model“-Verzeichnis des Moduls abgelegt

ITABS GbR – Rouven Alexander Rieker 7 04.11.2010

Page 8: Magento: Event/Observer

Programmablauf mit Event/Observer in Magento

ITABS GbR – Rouven Alexander Rieker 8 04.11.2010

Page 9: Magento: Event/Observer

Beteiligte Dateien während es Programmablaufs

Datei Funk*on

app/Mage.php         dispatchEvent()

app/code/core/Mage/Model/App.php dispatchEvent()

     lib/Varien/Event.php __construct()

     lib/Varien/Event/Observer.php __construct()

app/code/core/Mage/Model/App.php _callObserverMethod()

     app/code/pool/Namespace/Module/Model/Observer.php myObserverMethod()

ITABS GbR – Rouven Alexander Rieker 9 04.11.2010

Page 10: Magento: Event/Observer

Definition in der config.xml

...

<events> <event_name> <observers> <module_observer_name> <type>singleton</type> <class>module/observer</class> <method>myObserverMethod</method> </module_observer_name> </observers </event_name>

</events>

...

ITABS GbR – Rouven Alexander Rieker 10 04.11.2010

Page 11: Magento: Event/Observer

PRAXISBEISPIELE

11 ITABS GbR – Rouven Alexander Rieker 04.11.2010

Page 12: Magento: Event/Observer

Praxisbeispiel 1

•  Ein Shop-Besitzer möchte zur Veranstaltung „Meet Magento“ allen Magento-Developern sein einziges Produkt (Produkt-Typ: Einfaches Produkt) statt 999,99 € zum Sonderpreis von 499,99 € anbieten.

•  Welche Events werden benötigt? –  catalog_product_get_final_price

ITABS GbR – Rouven Alexander Rieker 12 04.11.2010

Page 13: Magento: Event/Observer

Praxisbeispiel 2

•  Ein Kunde möchte, dass alle Authorisierungsaktionen im Magento-Backend bzw. der Magento-API in einer eigenen Datei geloggt werden.

•  Welche Events werden benötigt? –  admin_user_authenticate_after –  api_user_authenticated

•  Vorteil: Überschreiben wäre in diesem Fall wesentlich aufwendiger gewesen, so relativ einfach und die eigene Business-Logik in einer Datei zusammengefasst.

ITABS GbR – Rouven Alexander Rieker 13 04.11.2010

Page 14: Magento: Event/Observer

Diskussion, Austausch, Eigene Erfahrungen

14 ITABS GbR – Rouven Alexander Rieker 04.11.2010

Page 15: Magento: Event/Observer

VIELEN DANK!

Meine Kontaktdaten: E-Mail: [email protected] Telefon: 07022-308404-13 Adresse: ITABS GbR, Zementwerk 1, 72622 Nürtingen

Twitter: twitter.com/therouv

04.11.2010 15 ITABS GbR – Rouven Alexander Rieker