public function dumpEvents(Configuration $configuration = null) { if (!$configuration) { $configuration = new Configuration(array()); } $content = []; foreach ($configuration->events as $event_name => $event_configuration) { $event_key = $this->camelize($event_name); $event_class = $this->resolveString($event_configuration->class, $configuration->toArray()); $event_dispatcher_prepend = <<<PREPEND /** * @return \\{$event_class} */ public function dispatch{$event_key}Event(\\{$event_class} \$event) { PREPEND; $body = <<<BODY \$dispatcher = new Symfony\\Component\\EventDispatcher\\EventDispatcher(); BODY; foreach ($event_configuration->handlers as $handler) { $handler = $handler->toArray(); $handler = $this->resolveArguments($handler, $configuration->toArray()); $handler = new Configuration($handler); $body .= <<<BODY \$dispatcher->addListener('{$event_name}', [{$handler['0']}, {$handler['1']}]); BODY; } $event_dispatcher_append = <<<APPEND \$dispatcher->dispatch('{$event_name}', \$event); return \$event; } APPEND; $content[] = $event_dispatcher_prepend . $body . $event_dispatcher_append; } $body = implode("\n", $content); return $body; }