4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\HttpKernel\DataCollector;
14 use Symfony\Component\HttpFoundation\RedirectResponse;
15 use Symfony\Component\HttpFoundation\Request;
16 use Symfony\Component\HttpFoundation\Response;
17 use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
20 * RouterDataCollector.
22 * @author Fabien Potencier <fabien@symfony.com>
24 class RouterDataCollector extends DataCollector
27 * @var \SplObjectStorage
29 protected $controllers;
31 public function __construct()
39 public function collect(Request $request, Response $response, \Exception $exception = null)
41 if ($response instanceof RedirectResponse) {
42 $this->data['redirect'] = true;
43 $this->data['url'] = $response->getTargetUrl();
45 if ($this->controllers->contains($request)) {
46 $this->data['route'] = $this->guessRoute($request, $this->controllers[$request]);
50 unset($this->controllers[$request]);
53 public function reset()
55 $this->controllers = new \SplObjectStorage();
64 protected function guessRoute(Request $request, $controller)
70 * Remembers the controller associated to each request.
72 public function onKernelController(FilterControllerEvent $event)
74 $this->controllers[$event->getRequest()] = $event->getController();
78 * @return bool Whether this request will result in a redirect
80 public function getRedirect()
82 return $this->data['redirect'];
86 * @return string|null The target URL
88 public function getTargetUrl()
90 return $this->data['url'];
94 * @return string|null The target route
96 public function getTargetRoute()
98 return $this->data['route'];
104 public function getName()