| Viewing file:  RouterDataCollector.php (2.36 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?php
 /*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
 
 /**
 * RouterDataCollector.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
 class RouterDataCollector extends DataCollector
 {
 protected $controllers;
 
 public function __construct()
 {
 $this->controllers = new \SplObjectStorage();
 
 $this->data = array(
 'redirect' => false,
 'url'      => null,
 'route'    => null,
 );
 }
 
 /**
 * {@inheritdoc}
 */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
 if ($response instanceof RedirectResponse) {
 $this->data['redirect'] = true;
 $this->data['url'] = $response->getTargetUrl();
 
 if ($this->controllers->contains($request)) {
 $this->data['route'] = $this->guessRoute($request, $this->controllers[$request]);
 }
 }
 
 unset($this->controllers[$request]);
 }
 
 protected function guessRoute(Request $request, $controller)
 {
 return 'n/a';
 }
 
 /**
 * Remembers the controller associated to each request.
 *
 * @param FilterControllerEvent $event The filter controller event
 */
 public function onKernelController(FilterControllerEvent $event)
 {
 $this->controllers[$event->getRequest()] = $event->getController();
 }
 
 /**
 * @return Boolean Whether this request will result in a redirect
 */
 public function getRedirect()
 {
 return $this->data['redirect'];
 }
 
 /**
 * @return string|null The target URL
 */
 public function getTargetUrl()
 {
 return $this->data['url'];
 }
 
 /**
 * @return string|null The target route
 */
 public function getTargetRoute()
 {
 return $this->data['route'];
 }
 
 /**
 * {@inheritdoc}
 */
 public function getName()
 {
 return 'router';
 }
 }
 
 |