/** * {@inheritdoc} */ public function dispatch($event) { $event = $this->ensureEvent($event); // pre dispatch event $preDispatchEvent = new PreDispatchEvent($event); $eventName = $preDispatchEvent->eventName(); if ($listeners = $this->eventListeners($eventName)) { $this->doDispatch($listeners, $preDispatchEvent); } // dispatch event $eventName = $event->eventName(); if ($listeners = $this->eventListeners($eventName)) { $this->doDispatch($listeners, $event); } // post dispatch event $postDispatchEvent = new PostDispatchEvent($event); $eventName = $postDispatchEvent->eventName(); if ($listeners = $this->eventListeners($eventName)) { $this->doDispatch($listeners, $postDispatchEvent); } return $event; }
/** * @param PreDispatchEvent $preDispatchEvent */ public function onPreDispatchEvent(PreDispatchEvent $preDispatchEvent) { if ($this->preDispatchHandler) { call_user_func($this->preDispatchHandler, $preDispatchEvent->event(), $this->io); } else { $this->io->writeLine('<c1>------------------------------------------------------------------------</c1>'); $this->io->writeLine('Dispatching <c1>' . $this->eventToString($preDispatchEvent->event()) . '</c1> with:'); $this->io->writeLine(''); $properties = $this->objectToPropertyArray($preDispatchEvent->event()); $table = new Table(TableStyle::asciiBorder()); $table->setHeaderRow(array_keys($properties)); $table->addRow(array_values($properties)); $table->render($this->io); $this->io->writeLine(''); } }