You are here

RouterDataCollector.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php

File

vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
View source
<?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 bool 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';
  }

}

Classes

Namesort descending Description
RouterDataCollector RouterDataCollector.