© saicle/Shutterstock.com
PHP Magazin
Eine Einführung in den EventManager in Zend Framework 2

Vor dem Event ist nach dem Event

Der EventManager [1] war eine der größten Neuerungen, die das Zend Framework 2 mit sich brachte. Die Komponente war für die Entwicklung vom ZF2 so wichtig, dass Sie sogar für das ZF1 zurückportiert wurde [2]. Mit dieser neuen Komponente ist es seitdem möglich, nicht nur sehr einfach in den MVC-Prozess einzugreifen, sondern auch eigene Klassen und Services Event-basiert erweitern zu können. Dieser Artikel zeigt verschiedene Einsatzmöglichkeiten anhand von einigen ausgewählten Beispielen auf, die Ihnen Ideen für eigene Umsetzungen bieten sollen.

Ralf Eggert


Damit Sie die Beispiele selbst nachvollziehen können, steht eine Beispielanwendung auf GitHub für Sie bereit [3]. Sie können das Projekt wie folgt klonen (bitte ggf. die Verzeichnisse anpassen) und installieren:

> cd /home/devhost> git clone https://github.com/RalfEggert/phpmagazin.event-manager > cd phpmagazin.event-manager > php composer.phar selfupdate> php composer.phar install> sudo chmod 777 -R data/

Danach richten Sie noch einen Virtual Host für die Adresse phpmagazin.event-manager ein, der wie in Listing 1 aussehen könnte. Wenn Sie nun http://­phpmagazin.­event-manager/ in Ihrem Browser aufrufen, sollte die Seite ungefähr wie in Abbildung 1 aussehen. Nun können wir loslegen.

Listing 1 ServerName phpmagazin.event-manager DocumentRoot /home/devhost/phpmagazin.event-manager/public/ AccessFileName .htaccess SetEnv APPLICATION_ENV development  Options FollowSymLinks AllowOverride All   Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted

Abb. 1: Aufruf der Beispielanwendung

Zuerst etwas Theorie ...

Bei der ereignisgesteuerten Architektur (Event-driven Architecture) wird die Interaktion von lose gekoppelten Komponenten mithilfe von Ereignissen gesteuert. Dabei fällt den Beobachtern (Observer oder Listener) die Aufgabe zu, den lieben, langen Tag darauf zu warten, dass ein bestimmtes Ereignis angestoßen wird (Trigger an Event). Der Zend\EventManager löst diese Aufgabe und stellt für das Zend Framework 2 die passende Infrastruktur bereit, um in einer Applikation eine ereignisgesteuerte Architektur implementieren zu können.

Dabei stellt das Zend Framework 2 mithilfe des Servicemanagers sicher, dass jedes Objekt immer eine eigene Instanz von Zend\EventManager übergeben bekommt. Jedes Objekt, das das Zend\EventManager\EventManagerAwareInterface implementiert und über den Servicemanager instanziiert wird, bekommt dabei automatisch diese neue Instanz des EventManagers übergeben. Für übergreifende Dinge steht der Shared­EventManager bereit, deren Listener von den einzelnen EventManager-Instanzen ebenfalls ausgeführt werden, wenn ein Ereignis für einen definierten Listener ausgeführt worden ist.

... und dann die Praxis

Die Theorie klingt gut und schön, doch erst ein praktisches Beispiel hilft den meisten Einsteigern, das dahinterliegende Prinzip wirklich zu er...

PHP Magazin
Eine Einführung in den EventManager in Zend Framework 2

Vor dem Event ist nach dem Event

Der EventManager [1] war eine der größten Neuerungen, die das Zend Framework 2 mit sich brachte. Die Komponente war für die Entwicklung vom ZF2 so wichtig, dass Sie sogar für das ZF1 zurückportiert wurde [2]. Mit dieser neuen Komponente ist es seitdem möglich, nicht nur sehr einfach in den MVC-Prozess einzugreifen, sondern auch eigene Klassen und Services Event-basiert erweitern zu können. Dieser Artikel zeigt verschiedene Einsatzmöglichkeiten anhand von einigen ausgewählten Beispielen auf, die Ihnen Ideen für eigene Umsetzungen bieten sollen.

Ralf Eggert


Damit Sie die Beispiele selbst nachvollziehen können, steht eine Beispielanwendung auf GitHub für Sie bereit [3]. Sie können das Projekt wie folgt klonen (bitte ggf. die Verzeichnisse anpassen) und installieren:

> cd /home/devhost> git clone https://github.com/RalfEggert/phpmagazin.event-manager > cd phpmagazin.event-manager > php composer.phar selfupdate> php composer.phar install> sudo chmod 777 -R data/

Danach richten Sie noch einen Virtual Host für die Adresse phpmagazin.event-manager ein, der wie in Listing 1 aussehen könnte. Wenn Sie nun http://­phpmagazin.­event-manager/ in Ihrem Browser aufrufen, sollte die Seite ungefähr wie in Abbildung 1 aussehen. Nun können wir loslegen.

Listing 1 ServerName phpmagazin.event-manager DocumentRoot /home/devhost/phpmagazin.event-manager/public/ AccessFileName .htaccess SetEnv APPLICATION_ENV development  Options FollowSymLinks AllowOverride All   Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted

Abb. 1: Aufruf der Beispielanwendung

Zuerst etwas Theorie ...

Bei der ereignisgesteuerten Architektur (Event-driven Architecture) wird die Interaktion von lose gekoppelten Komponenten mithilfe von Ereignissen gesteuert. Dabei fällt den Beobachtern (Observer oder Listener) die Aufgabe zu, den lieben, langen Tag darauf zu warten, dass ein bestimmtes Ereignis angestoßen wird (Trigger an Event). Der Zend\EventManager löst diese Aufgabe und stellt für das Zend Framework 2 die passende Infrastruktur bereit, um in einer Applikation eine ereignisgesteuerte Architektur implementieren zu können.

Dabei stellt das Zend Framework 2 mithilfe des Servicemanagers sicher, dass jedes Objekt immer eine eigene Instanz von Zend\EventManager übergeben bekommt. Jedes Objekt, das das Zend\EventManager\EventManagerAwareInterface implementiert und über den Servicemanager instanziiert wird, bekommt dabei automatisch diese neue Instanz des EventManagers übergeben. Für übergreifende Dinge steht der Shared­EventManager bereit, deren Listener von den einzelnen EventManager-Instanzen ebenfalls ausgeführt werden, wenn ein Ereignis für einen definierten Listener ausgeführt worden ist.

... und dann die Praxis

Die Theorie klingt gut und schön, doch erst ein praktisches Beispiel hilft den meisten Einsteigern, das dahinterliegende Prinzip wirklich zu er...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang