Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Was sind Events? 

Ein Ereignis (englisch event) dient in der Softwaretechnik – bei Entwicklung nach dem ereignisorientieren Programmierparadigma – zur Steuerung des Programmflusses. Das Programm wird nicht linear durchlaufen, sondern es werden spezielle Ereignisbehandlungsroutinen (engl. listenerobserverevent handler) immer dann ausgeführt, wenn ein bestimmtes Ereignis auftritt. Ereignisorientierte Programmierung gehört zu den parallelen Programmiertechniken, hat also deren Vor- und Nachteile.

(Quelle: Wikipedia)

Integration in brandbox

...

Codeblock
languagephp
$event = new Event\TestEvent();
$this
   ->getEventManager()
   ->getDispatcher()
   ->dispatch(Event\TestEvent::class, $event)
;
  • TestSubscriber muss von \Symfony\Component\EventDispatcher\EventSubscriberInterface ableiten

  • Der Subscriber registriert das Event Event\TestEvent::class

  • Der Subscriber muss im Ordner Lib/Subscriber liegen

...

Codeblock
languagephp
$this
  ->getEventHandler()
  ->getDispatcher()
;

Debugging

Event-Calls können nachverfolgt werden. Um einen Überblick über den Call-Stack zu erhalten aktivieren Sie in der config.php debug.event.

Codeblock
languagephp
'debug' => [
    'event' => true
]

Der Call-Stack wird dann im regulären Log dargestellt.

Beispiel

Codeblock
BRANDBOX.EVENT Event: Brandbox\BaseCore\Base\Edit\Lib\Event\OnPopulateEdit
BRANDBOX.EVENT - Listener: Brandbox\ShopVariant\Ui\Variant\Lib\Subscriber\BaseEditSubscriber::setClassificationId
BRANDBOX.EVENT - Listener: Brandbox\BaseCore\Base\Localization\Lib\Subscriber\BaseEditSubscriber::onPopulateBuilder
BRANDBOX.EVENT - Listener: Brandbox\BaseCore\Base\Localization\Lib\Subscriber\BaseEditSubscriber::onPopulateCollation

App strukturieren

Die Pfade innerhalb eines Packages sind definiert. Siehe Eine App erstellen