89f00a06ca2a78175fe0d40a0f520f2121d400c7
[yaffs-website] / vendor / symfony-cmf / routing / NestedMatcher / UrlMatcher.php
1 <?php
2
3 /*
4  * This file is part of the Symfony CMF package.
5  *
6  * (c) 2011-2015 Symfony CMF
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Cmf\Component\Routing\NestedMatcher;
13
14 use Symfony\Component\Routing\Route;
15 use Symfony\Component\Routing\RouteCollection;
16 use Symfony\Component\Routing\Matcher\UrlMatcher as SymfonyUrlMatcher;
17 use Symfony\Component\HttpFoundation\Request;
18 use Symfony\Component\Routing\RequestContext;
19 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
20
21 /**
22  * Extended UrlMatcher to provide an additional interface and enhanced features.
23  *
24  * This class requires Symfony 2.2 for a refactoring done to the symfony UrlMatcher
25  *
26  * @author Larry Garfield
27  */
28 class UrlMatcher extends SymfonyUrlMatcher implements FinalMatcherInterface
29 {
30     /**
31      * {@inheritdoc}
32      */
33     public function finalMatch(RouteCollection $collection, Request $request)
34     {
35         $this->routes = $collection;
36         $context = new RequestContext();
37         $context->fromRequest($request);
38         $this->setContext($context);
39
40         return $this->match($request->getPathInfo());
41     }
42
43     /**
44      * {@inheritdoc}
45      */
46     protected function getAttributes(Route $route, $name, array $attributes)
47     {
48         if ($route instanceof RouteObjectInterface && is_string($route->getRouteKey())) {
49             $name = $route->getRouteKey();
50         }
51         $attributes[RouteObjectInterface::ROUTE_NAME] = $name;
52         $attributes[RouteObjectInterface::ROUTE_OBJECT] = $route;
53
54         return $this->mergeDefaults($attributes, $route->getDefaults());
55     }
56 }