Version 1
[yaffs-website] / vendor / symfony-cmf / routing / LazyRouteCollection.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;
13
14 use Symfony\Component\Routing\Exception\RouteNotFoundException;
15 use Symfony\Component\Routing\RouteCollection;
16 use Symfony\Component\Routing\Route;
17
18 class LazyRouteCollection extends RouteCollection
19 {
20     /**
21      * The route provider for this generator.
22      *
23      * @var RouteProviderInterface
24      */
25     protected $provider;
26
27     public function __construct(RouteProviderInterface $provider)
28     {
29         $this->provider = $provider;
30     }
31
32     /**
33      * {@inheritdoc}
34      */
35     public function getIterator()
36     {
37         return new \ArrayIterator($this->all());
38     }
39
40     /**
41      * Gets the number of Routes in this collection.
42      *
43      * @return int The number of routes
44      */
45     public function count()
46     {
47         return count($this->all());
48     }
49
50     /**
51      * Returns all routes in this collection.
52      *
53      * @return Route[] An array of routes
54      */
55     public function all()
56     {
57         return $this->provider->getRoutesByNames(null);
58     }
59
60     /**
61      * Gets a route by name.
62      *
63      * @param string $name The route name
64      *
65      * @return Route|null A Route instance or null when not found
66      */
67     public function get($name)
68     {
69         try {
70             return $this->provider->getRouteByName($name);
71         } catch (RouteNotFoundException $e) {
72             return;
73         }
74     }
75 }