vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php line 68

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\HttpKernel\DataCollector;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  15. /**
  16.  * RouterDataCollector.
  17.  *
  18.  * @author Fabien Potencier <fabien@symfony.com>
  19.  */
  20. class RouterDataCollector extends DataCollector {
  21.     /**
  22.      * @var \SplObjectStorage
  23.      */
  24.     protected $controllers;
  25.     public function __construct() {
  26.         $this->reset();
  27.     }
  28.     /**
  29.      * {@inheritdoc}
  30.      */
  31.     public function collect(Request $requestResponse $response, \Exception $exception null) {
  32.         if ($response instanceof RedirectResponse) {
  33.             $this->data['redirect'] = true;
  34.             $this->data['url'] = $response->getTargetUrl();
  35.             if ($this->controllers->contains($request)) {
  36.                 $this->data['route'] = $this->guessRoute($request$this->controllers[$request]);
  37.             }
  38.         }
  39.         unset($this->controllers[$request]);
  40.     }
  41.     public function reset() {
  42.         $this->controllers = new \SplObjectStorage();
  43.         $this->data = [
  44.             'redirect' => false,
  45.             'url' => null,
  46.             'route' => null,
  47.         ];
  48.     }
  49.     protected function guessRoute(Request $request$controller) {
  50.         return 'n/a';
  51.     }
  52.     /**
  53.      * Remembers the controller associated to each request.
  54.      */
  55.     public function onKernelController(FilterControllerEvent $event) {
  56.         $this->controllers[$event->getRequest()] = $event->getController();
  57.     }
  58.     /**
  59.      * @return bool Whether this request will result in a redirect
  60.      */
  61.     public function getRedirect() {
  62.         return $this->data['redirect'];
  63.     }
  64.     /**
  65.      * @return string|null The target URL
  66.      */
  67.     public function getTargetUrl() {
  68.         return $this->data['url'];
  69.     }
  70.     /**
  71.      * @return string|null The target route
  72.      */
  73.     public function getTargetRoute() {
  74.         return $this->data['route'];
  75.     }
  76.     /**
  77.      * {@inheritdoc}
  78.      */
  79.     public function getName() {
  80.         return 'router';
  81.     }
  82. }