Magento: Event/Observer
-
Upload
therouv -
Category
Self Improvement
-
view
2.606 -
download
0
description
Transcript of Magento: Event/Observer
Flexible Schnittstellen durch Event/Observer
Agenda
• Event/Observer – Allgemein
• Event/Observer – In Magento
• Praxisbeispiel
• Diskussion / Austausch / Eigene Erfahrungen
04.11.2010 ITABS GbR – Rouven Alexander Rieker 2
EVENT/OBSERVER – ALLGEMEIN
3 ITABS GbR – Rouven Alexander Rieker 04.11.2010
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
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
EVENT/OBSERVER – IN MAGENTO
6 ITABS GbR – Rouven Alexander Rieker 04.11.2010
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
Programmablauf mit Event/Observer in Magento
ITABS GbR – Rouven Alexander Rieker 8 04.11.2010
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
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
PRAXISBEISPIELE
11 ITABS GbR – Rouven Alexander Rieker 04.11.2010
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
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
Diskussion, Austausch, Eigene Erfahrungen
14 ITABS GbR – Rouven Alexander Rieker 04.11.2010
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