1 | <?php |
||
11 | final class Router implements RouterInterface |
||
12 | { |
||
13 | /** |
||
14 | * @var Dispatcher |
||
15 | */ |
||
16 | private $dispatcher; |
||
17 | |||
18 | /** |
||
19 | * @var RouteInterface[] |
||
20 | */ |
||
21 | private $routes; |
||
22 | |||
23 | /** |
||
24 | * @param RouteInterface[] A collection of routes |
||
25 | */ |
||
26 | 15 | public function __construct(array $routes) |
|
27 | { |
||
28 | 15 | $this->routes = array(); |
|
29 | |||
30 | 13 | $this->dispatcher = FastRoute\simpleDispatcher(function (RouteCollector $collector) use ($routes) { |
|
31 | 5 | foreach ($routes as $route) { |
|
32 | 12 | if (!$route instanceof RouteInterface) { |
|
33 | 1 | throw new \InvalidArgumentException('Routes array must contain only RouteInterface objects'); |
|
34 | } |
||
35 | |||
36 | 3 | $key = spl_object_hash($route); |
|
37 | |||
38 | 9 | $this->routes[$key] = $route; |
|
39 | |||
40 | 3 | $collector->addRoute( |
|
41 | 9 | $route->getMethods(), |
|
42 | 9 | $route->getPattern(), |
|
43 | $key |
||
44 | ); |
||
45 | 4 | } |
|
46 | 5 | }); |
|
47 | 6 | } |
|
48 | |||
49 | /** |
||
50 | * {@inheritdoc} |
||
51 | */ |
||
52 | 12 | public function match($method, $uri) |
|
65 | } |
||
66 |