diff --git a/src/Symfony/Framework/WebBundle/Listener/ResponseFilter.php b/src/Symfony/Components/HttpKernel/Listener/ResponseFilter.php similarity index 65% rename from src/Symfony/Framework/WebBundle/Listener/ResponseFilter.php rename to src/Symfony/Components/HttpKernel/Listener/ResponseFilter.php index f4b327d2d2..2edc01af54 100644 --- a/src/Symfony/Framework/WebBundle/Listener/ResponseFilter.php +++ b/src/Symfony/Components/HttpKernel/Listener/ResponseFilter.php @@ -1,6 +1,6 @@ dispatcher = $dispatcher; - } - - public function register() - { - $this->dispatcher->connect('core.response', array($this, 'filter')); + $dispatcher->connect('core.response', array($this, 'filter')); } + /** + * Filters the Response. + * + * @param Symfony\Components\EventDispatcher\Event $event An Event instance + * @param Symfony\Components\HttpKernel\Response $response A Response instance + */ public function filter(Event $event, Response $response) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getParameter('request_type') || $response->headers->has('Content-Type')) { diff --git a/src/Symfony/Foundation/EventDispatcher.php b/src/Symfony/Foundation/EventDispatcher.php index f079a300fd..0cac70aea9 100644 --- a/src/Symfony/Foundation/EventDispatcher.php +++ b/src/Symfony/Foundation/EventDispatcher.php @@ -16,8 +16,7 @@ use Symfony\Components\DependencyInjection\ContainerInterface; */ /** - * This EventDispatcher implementation uses a DependencyInjection container to - * lazy load listeners. + * This EventDispatcher implementation uses a DependencyInjection container to load listeners. * * @package Symfony * @subpackage Foundation @@ -25,44 +24,14 @@ use Symfony\Components\DependencyInjection\ContainerInterface; */ class EventDispatcher extends BaseEventDispatcher { - protected $container; - /** * Constructor. * */ public function __construct(ContainerInterface $container) { - $this->container = $container; - foreach ($container->findAnnotatedServiceIds('kernel.listener') as $id => $attributes) { - foreach ($attributes as $attribute) { - if (isset($attribute['event'])) { - $this->connect($attribute['event'], array($id, isset($attribute['method']) ? $attribute['method'] : 'handle')); - } - } + $container->getService($id)->register($this); } } - - /** - * Returns all listeners associated with a given event name. - * - * @param string $name The event name - * - * @return array An array of listeners - */ - public function getListeners($name) - { - if (!isset($this->listeners[$name])) { - return array(); - } - - foreach ($this->listeners[$name] as $i => $listener) { - if (is_array($listener) && is_string($listener[0])) { - $this->listeners[$name][$i] = array($this->container->getService($listener[0]), $listener[1]); - } - } - - return $this->listeners[$name]; - } } diff --git a/src/Symfony/Foundation/bootstrap.php b/src/Symfony/Foundation/bootstrap.php index a70cf3a85f..117894123c 100644 --- a/src/Symfony/Foundation/bootstrap.php +++ b/src/Symfony/Foundation/bootstrap.php @@ -338,35 +338,11 @@ use Symfony\Components\DependencyInjection\ContainerInterface; class EventDispatcher extends BaseEventDispatcher { - protected $container; - public function __construct(ContainerInterface $container) { - $this->container = $container; - foreach ($container->findAnnotatedServiceIds('kernel.listener') as $id => $attributes) { - foreach ($attributes as $attribute) { - if (isset($attribute['event'])) { - $this->connect($attribute['event'], array($id, isset($attribute['method']) ? $attribute['method'] : 'handle')); - } - } + $container->getService($id)->register($this); } } - - - public function getListeners($name) - { - if (!isset($this->listeners[$name])) { - return array(); - } - - foreach ($this->listeners[$name] as $i => $listener) { - if (is_array($listener) && is_string($listener[0])) { - $this->listeners[$name][$i] = array($this->container->getService($listener[0]), $listener[1]); - } - } - - return $this->listeners[$name]; - } } diff --git a/src/Symfony/Framework/ProfilerBundle/DataCollector/DataCollectorManager.php b/src/Symfony/Framework/ProfilerBundle/DataCollector/DataCollectorManager.php index 4fded9e296..7db6544cfc 100644 --- a/src/Symfony/Framework/ProfilerBundle/DataCollector/DataCollectorManager.php +++ b/src/Symfony/Framework/ProfilerBundle/DataCollector/DataCollectorManager.php @@ -3,6 +3,7 @@ namespace Symfony\Framework\ProfilerBundle\DataCollector; use Symfony\Components\DependencyInjection\ContainerInterface; +use Symfony\Components\EventDispatcher\EventDispatcher; use Symfony\Components\EventDispatcher\Event; use Symfony\Components\HttpKernel\Response; use Symfony\Components\HttpKernel\HttpKernelInterface; @@ -43,9 +44,14 @@ class DataCollectorManager $this->collectors = $this->initCollectors(); } - public function register() + /** + * Registers a core.response listener. + * + * @param Symfony\Components\EventDispatcher\EventDispatcher $dispatcher An EventDispatcher instance + */ + public function register(EventDispatcher $dispatcher) { - $this->container->getEventDispatcherService()->connect('core.response', array($this, 'handle')); + $dispatcher->connect('core.response', array($this, 'handle')); } public function handle(Event $event, Response $response) diff --git a/src/Symfony/Framework/ProfilerBundle/Listener/WebDebugToolbar.php b/src/Symfony/Framework/ProfilerBundle/Listener/WebDebugToolbar.php index 88801580b2..b894f09581 100644 --- a/src/Symfony/Framework/ProfilerBundle/Listener/WebDebugToolbar.php +++ b/src/Symfony/Framework/ProfilerBundle/Listener/WebDebugToolbar.php @@ -3,6 +3,7 @@ namespace Symfony\Framework\ProfilerBundle\Listener; use Symfony\Components\DependencyInjection\ContainerInterface; +use Symfony\Components\EventDispatcher\EventDispatcher; use Symfony\Components\EventDispatcher\Event; use Symfony\Components\HttpKernel\Response; use Symfony\Components\HttpKernel\HttpKernelInterface; @@ -35,9 +36,14 @@ class WebDebugToolbar $this->collectorManager = $collectorManager; } - public function register() + /** + * Registers a core.response listener. + * + * @param Symfony\Components\EventDispatcher\EventDispatcher $dispatcher An EventDispatcher instance + */ + public function register(EventDispatcher $dispatcher) { - $this->container->getEventDispatcherService()->connect('core.response', array($this, 'handle')); + $dispatcher->connect('core.response', array($this, 'handle')); } public function handle(Event $event, Response $response) diff --git a/src/Symfony/Framework/ProfilerBundle/Resources/config/collectors.xml b/src/Symfony/Framework/ProfilerBundle/Resources/config/collectors.xml index dd3a1ee126..f7f7d7c0ec 100644 --- a/src/Symfony/Framework/ProfilerBundle/Resources/config/collectors.xml +++ b/src/Symfony/Framework/ProfilerBundle/Resources/config/collectors.xml @@ -17,7 +17,7 @@ - + diff --git a/src/Symfony/Framework/ProfilerBundle/Resources/config/toolbar.xml b/src/Symfony/Framework/ProfilerBundle/Resources/config/toolbar.xml index 92cc40dba1..c96d792330 100644 --- a/src/Symfony/Framework/ProfilerBundle/Resources/config/toolbar.xml +++ b/src/Symfony/Framework/ProfilerBundle/Resources/config/toolbar.xml @@ -10,7 +10,7 @@ - + diff --git a/src/Symfony/Framework/WebBundle/Listener/ControllerLoader.php b/src/Symfony/Framework/WebBundle/Listener/ControllerLoader.php index 54a126207c..f8eb006507 100644 --- a/src/Symfony/Framework/WebBundle/Listener/ControllerLoader.php +++ b/src/Symfony/Framework/WebBundle/Listener/ControllerLoader.php @@ -27,19 +27,22 @@ use Symfony\Components\EventDispatcher\Event; class ControllerLoader { protected $manager; - protected $dispatcher; protected $logger; - public function __construct(EventDispatcher $dispatcher, ControllerManager $manager, LoggerInterface $logger = null) + public function __construct(ControllerManager $manager, LoggerInterface $logger = null) { - $this->dispatcher = $dispatcher; $this->manager = $manager; $this->logger = $logger; } - public function register() + /** + * Registers a core.load_controller listener. + * + * @param Symfony\Components\EventDispatcher\EventDispatcher $dispatcher An EventDispatcher instance + */ + public function register(EventDispatcher $dispatcher) { - $this->dispatcher->connect('core.load_controller', array($this, 'resolve')); + $dispatcher->connect('core.load_controller', array($this, 'resolve')); } /** diff --git a/src/Symfony/Framework/WebBundle/Listener/ExceptionHandler.php b/src/Symfony/Framework/WebBundle/Listener/ExceptionHandler.php index 793c38141c..c150987e2f 100644 --- a/src/Symfony/Framework/WebBundle/Listener/ExceptionHandler.php +++ b/src/Symfony/Framework/WebBundle/Listener/ExceptionHandler.php @@ -3,6 +3,7 @@ namespace Symfony\Framework\WebBundle\Listener; use Symfony\Components\DependencyInjection\ContainerInterface; +use Symfony\Components\EventDispatcher\EventDispatcher; use Symfony\Components\EventDispatcher\Event; use Symfony\Foundation\LoggerInterface; use Symfony\Components\HttpKernel\HttpKernelInterface; @@ -37,9 +38,14 @@ class ExceptionHandler $this->controller = $controller; } - public function register() + /** + * Registers a core.exception listener. + * + * @param Symfony\Components\EventDispatcher\EventDispatcher $dispatcher An EventDispatcher instance + */ + public function register(EventDispatcher $dispatcher) { - $this->container->getEventDispatcherService()->connect('core.exception', array($this, 'handle')); + $dispatcher->connect('core.exception', array($this, 'handle')); } public function handle(Event $event) diff --git a/src/Symfony/Framework/WebBundle/Listener/RequestParser.php b/src/Symfony/Framework/WebBundle/Listener/RequestParser.php index 9f5d57644e..e42d018a67 100644 --- a/src/Symfony/Framework/WebBundle/Listener/RequestParser.php +++ b/src/Symfony/Framework/WebBundle/Listener/RequestParser.php @@ -4,6 +4,7 @@ namespace Symfony\Framework\WebBundle\Listener; use Symfony\Foundation\LoggerInterface; use Symfony\Components\DependencyInjection\ContainerInterface; +use Symfony\Components\EventDispatcher\EventDispatcher; use Symfony\Components\EventDispatcher\Event; use Symfony\Components\Routing\RouterInterface; use Symfony\Components\HttpKernel\HttpKernelInterface; @@ -37,9 +38,14 @@ class RequestParser $this->logger = $logger; } - public function register() + /** + * Registers a core.request listener. + * + * @param Symfony\Components\EventDispatcher\EventDispatcher $dispatcher An EventDispatcher instance + */ + public function register(EventDispatcher $dispatcher) { - $this->container->getEventDispatcherService()->connect('core.request', array($this, 'resolve')); + $dispatcher->connect('core.request', array($this, 'resolve')); } public function resolve(Event $event) diff --git a/src/Symfony/Framework/WebBundle/Resources/config/web.xml b/src/Symfony/Framework/WebBundle/Resources/config/web.xml index 7a08e2a201..fcb5d0d412 100644 --- a/src/Symfony/Framework/WebBundle/Resources/config/web.xml +++ b/src/Symfony/Framework/WebBundle/Resources/config/web.xml @@ -9,7 +9,7 @@ Symfony\Framework\WebBundle\Controller\ControllerManager Symfony\Framework\WebBundle\Listener\ControllerLoader Symfony\Components\Routing\Router - Symfony\Framework\WebBundle\Listener\ResponseFilter + Symfony\Components\HttpKernel\Listener\ResponseFilter Symfony\Framework\WebBundle\Listener\ExceptionHandler WebBundle @@ -24,14 +24,13 @@ - - + - + @@ -51,12 +50,11 @@ - - + - + %exception_handler.bundle%