You are here

abstract class RedirectableUrlMatcher in Zircon Profile 8

Same name in this branch
  1. 8 vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php \Symfony\Component\Routing\Matcher\RedirectableUrlMatcher
  2. 8 vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php \Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
Same name and namespace in other branches
  1. 8.0 vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php \Symfony\Component\Routing\Matcher\RedirectableUrlMatcher

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

Expanded class hierarchy of RedirectableUrlMatcher

File

vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php, line 20

Namespace

Symfony\Component\Routing\Matcher
View source
abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface {

  /**
   * {@inheritdoc}
   */
  public function match($pathinfo) {
    try {
      $parameters = parent::match($pathinfo);
    } catch (ResourceNotFoundException $e) {
      if ('/' === substr($pathinfo, -1) || !in_array($this->context
        ->getMethod(), array(
        'HEAD',
        'GET',
      ))) {
        throw $e;
      }
      try {
        parent::match($pathinfo . '/');
        return $this
          ->redirect($pathinfo . '/', null);
      } catch (ResourceNotFoundException $e2) {
        throw $e;
      }
    }
    return $parameters;
  }

  /**
   * {@inheritdoc}
   */
  protected function handleRouteRequirements($pathinfo, $name, Route $route) {

    // expression condition
    if ($route
      ->getCondition() && !$this
      ->getExpressionLanguage()
      ->evaluate($route
      ->getCondition(), array(
      'context' => $this->context,
      'request' => $this->request,
    ))) {
      return array(
        self::REQUIREMENT_MISMATCH,
        null,
      );
    }

    // check HTTP scheme requirement
    $scheme = $this->context
      ->getScheme();
    $schemes = $route
      ->getSchemes();
    if ($schemes && !$route
      ->hasScheme($scheme)) {
      return array(
        self::ROUTE_MATCH,
        $this
          ->redirect($pathinfo, $name, current($schemes)),
      );
    }
    return array(
      self::REQUIREMENT_MATCH,
      null,
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RedirectableUrlMatcher::handleRouteRequirements protected function Handles specific route requirements. Overrides UrlMatcher::handleRouteRequirements
RedirectableUrlMatcher::match public function Tries to match a URL path with a set of routes. Overrides UrlMatcher::match
RedirectableUrlMatcherInterface::redirect public function Redirects the user to another URL. 1
UrlMatcher::$allow protected property
UrlMatcher::$context protected property
UrlMatcher::$expressionLanguage protected property
UrlMatcher::$expressionLanguageProviders protected property
UrlMatcher::$request protected property
UrlMatcher::$routes protected property
UrlMatcher::addExpressionLanguageProvider public function
UrlMatcher::getAttributes protected function Returns an array of values to use as request attributes. 1
UrlMatcher::getContext public function Gets the request context. Overrides RequestContextAwareInterface::getContext
UrlMatcher::getExpressionLanguage protected function
UrlMatcher::matchCollection protected function Tries to match a URL with a set of routes. 1
UrlMatcher::matchRequest public function Tries to match a request with a set of routes. Overrides RequestMatcherInterface::matchRequest
UrlMatcher::mergeDefaults protected function Get merged default parameters.
UrlMatcher::REQUIREMENT_MATCH constant
UrlMatcher::REQUIREMENT_MISMATCH constant
UrlMatcher::ROUTE_MATCH constant
UrlMatcher::setContext public function Sets the request context. Overrides RequestContextAwareInterface::setContext
UrlMatcher::__construct public function Constructor. 4