Example #1
0
    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;
    }