1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: namespace Autarky\Routing;
12:
13: use Autarky\Container\ContainerInterface;
14: use Autarky\Providers\AbstractProvider;
15:
16: 17: 18:
19: class RoutingProvider extends AbstractProvider
20: {
21: public function register()
22: {
23: $dic = $this->app->getContainer();
24:
25: $dic->define('Symfony\Component\HttpFoundation\RequestStack', function() {
26: return $this->app->getRequestStack();
27: });
28: $dic->share('Symfony\Component\HttpFoundation\RequestStack');
29:
30: $dic->alias('FastRoute\RouteParser\Std', 'FastRoute\RouteParser');
31:
32: $dic->alias('Autarky\Routing\RoutePathGenerator', 'Autarky\Routing\RoutePathGeneratorInterface');
33:
34: $dic->define('Autarky\Routing\Router', function(ContainerInterface $container) {
35: $eventDispatcher = 'Symfony\Component\EventDispatcher\EventDispatcherInterface';
36: $eventDispatcher = $container->isBound($eventDispatcher)
37: ? $container->resolve($eventDispatcher) : null;
38:
39: $config = $this->app->getConfig();
40: $cachePath = ($config && !$config->get('app.debug')) ?
41: $config->get('path.route_cache') : null;
42:
43: return new Router(
44: $container->resolve('FastRoute\RouteParser'),
45: $container->resolve('Autarky\Routing\Invoker'),
46: $eventDispatcher, $cachePath
47: );
48: });
49: $dic->share('Autarky\Routing\Router');
50:
51: $dic->share('Autarky\Routing\UrlGenerator');
52:
53: $dic->share('Autarky\Routing\Invoker');
54:
55: $dic->alias('Autarky\Routing\Router',
56: 'Autarky\Routing\RouterInterface');
57: }
58: }
59: