Skip to content

Commit bb3baa3

Browse files
Tri PhamTobion
authored andcommitted
[Routing] Move configuration to PHP
1 parent b8276f2 commit bb3baa3

File tree

3 files changed

+179
-131
lines changed

3 files changed

+179
-131
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ public function load(array $configs, ContainerBuilder $container)
372372
$this->registerProfilerConfiguration($config['profiler'], $container, $loader, $phpLoader);
373373
$this->registerWorkflowConfiguration($config['workflows'], $container, $loader);
374374
$this->registerDebugConfiguration($config['php_errors'], $container, $phpLoader);
375-
$this->registerRouterConfiguration($config['router'], $container, $loader, $config['translator']['enabled_locales'] ?? []);
375+
$this->registerRouterConfiguration($config['router'], $container, $phpLoader, $config['translator']['enabled_locales'] ?? []);
376376
$this->registerAnnotationsConfiguration($config['annotations'], $container, $loader);
377377
$this->registerPropertyAccessConfiguration($config['property_access'], $container, $phpLoader);
378378
$this->registerSecretsConfiguration($config['secrets'], $container, $phpLoader);
@@ -863,7 +863,7 @@ private function registerDebugConfiguration(array $config, ContainerBuilder $con
863863
}
864864
}
865865

866-
private function registerRouterConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, array $enabledLocales = [])
866+
private function registerRouterConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, array $enabledLocales = [])
867867
{
868868
if (!$this->isConfigEnabled($container, $config)) {
869869
$container->removeDefinition('console.command.router_debug');
@@ -872,7 +872,7 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
872872
return;
873873
}
874874

875-
$loader->load('routing.xml');
875+
$loader->load('routing.php');
876876

877877
if (null === $config['utf8']) {
878878
trigger_deprecation('symfony/framework-bundle', '5.1', 'Not setting the "framework.router.utf8" configuration option is deprecated, it will default to "true" in version 6.0.');

Resources/config/routing.php

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
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\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Psr\Container\ContainerInterface;
15+
use Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer;
16+
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
17+
use Symfony\Bundle\FrameworkBundle\Controller\TemplateController;
18+
use Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader;
19+
use Symfony\Bundle\FrameworkBundle\Routing\RedirectableCompiledUrlMatcher;
20+
use Symfony\Bundle\FrameworkBundle\Routing\Router;
21+
use Symfony\Component\Config\Loader\LoaderResolver;
22+
use Symfony\Component\HttpKernel\EventListener\RouterListener;
23+
use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
24+
use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
25+
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
26+
use Symfony\Component\Routing\Loader\ContainerLoader;
27+
use Symfony\Component\Routing\Loader\DirectoryLoader;
28+
use Symfony\Component\Routing\Loader\GlobFileLoader;
29+
use Symfony\Component\Routing\Loader\PhpFileLoader;
30+
use Symfony\Component\Routing\Loader\XmlFileLoader;
31+
use Symfony\Component\Routing\Loader\YamlFileLoader;
32+
use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
33+
use Symfony\Component\Routing\Matcher\ExpressionLanguageProvider;
34+
use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
35+
use Symfony\Component\Routing\RequestContext;
36+
use Symfony\Component\Routing\RequestContextAwareInterface;
37+
use Symfony\Component\Routing\RouterInterface;
38+
39+
return static function (ContainerConfigurator $container) {
40+
$container->parameters()
41+
->set('router.request_context.host', 'localhost')
42+
->set('router.request_context.scheme', 'http')
43+
->set('router.request_context.base_url', '')
44+
;
45+
46+
$container->services()
47+
->set('routing.resolver', LoaderResolver::class)
48+
49+
->set('routing.loader.xml', XmlFileLoader::class)
50+
->args([
51+
service('file_locator'),
52+
])
53+
->tag('routing.loader')
54+
55+
->set('routing.loader.yml', YamlFileLoader::class)
56+
->args([
57+
service('file_locator'),
58+
])
59+
->tag('routing.loader')
60+
61+
->set('routing.loader.php', PhpFileLoader::class)
62+
->args([
63+
service('file_locator'),
64+
])
65+
->tag('routing.loader')
66+
67+
->set('routing.loader.glob', GlobFileLoader::class)
68+
->args([
69+
service('file_locator'),
70+
])
71+
->tag('routing.loader')
72+
73+
->set('routing.loader.directory', DirectoryLoader::class)
74+
->args([
75+
service('file_locator'),
76+
])
77+
->tag('routing.loader')
78+
79+
->set('routing.loader.container', ContainerLoader::class)
80+
->args([
81+
tagged_locator('routing.route_loader'),
82+
])
83+
->tag('routing.loader')
84+
85+
->set('routing.loader', DelegatingLoader::class)
86+
->public()
87+
->args([
88+
service('routing.resolver'),
89+
[], // Default options
90+
[], // Default requirements
91+
])
92+
93+
->set('router.default', Router::class)
94+
->args([
95+
service(ContainerInterface::class),
96+
param('router.resource'),
97+
[
98+
'cache_dir' => param('kernel.cache_dir'),
99+
'debug' => param('kernel.debug'),
100+
'generator_class' => CompiledUrlGenerator::class,
101+
'generator_dumper_class' => CompiledUrlGeneratorDumper::class,
102+
'matcher_class' => RedirectableCompiledUrlMatcher::class,
103+
'matcher_dumper_class' => CompiledUrlMatcherDumper::class,
104+
],
105+
service('router.request_context')->ignoreOnInvalid(),
106+
service('parameter_bag')->ignoreOnInvalid(),
107+
service('logger')->ignoreOnInvalid(),
108+
param('kernel.default_locale'),
109+
])
110+
->call('setConfigCacheFactory', [
111+
service('config_cache_factory'),
112+
])
113+
->tag('monolog.logger', ['channel' => 'router'])
114+
->tag('container.service_subscriber', ['id' => 'routing.loader'])
115+
->alias('router', 'router.default')
116+
->public()
117+
->alias(RouterInterface::class, 'router')
118+
->alias(UrlGeneratorInterface::class, 'router')
119+
->alias(UrlMatcherInterface::class, 'router')
120+
->alias(RequestContextAwareInterface::class, 'router')
121+
122+
->set('router.request_context', RequestContext::class)
123+
->factory([RequestContext::class, 'fromUri'])
124+
->args([
125+
param('router.request_context.base_url'),
126+
param('router.request_context.host'),
127+
param('router.request_context.scheme'),
128+
param('request_listener.http_port'),
129+
param('request_listener.https_port'),
130+
])
131+
->call('setParameter', [
132+
'_functions',
133+
service('router.expression_language_provider')->ignoreOnInvalid(),
134+
])
135+
->alias(RequestContext::class, 'router.request_context')
136+
137+
->set('router.expression_language_provider', ExpressionLanguageProvider::class)
138+
->args([
139+
tagged_locator('routing.expression_language_function', 'function'),
140+
])
141+
->tag('routing.expression_language_provider')
142+
143+
->set('router.cache_warmer', RouterCacheWarmer::class)
144+
->args([service(ContainerInterface::class)])
145+
->tag('container.service_subscriber', ['id' => 'router'])
146+
->tag('kernel.cache_warmer')
147+
148+
->set('router_listener', RouterListener::class)
149+
->args([
150+
service('router'),
151+
service('request_stack'),
152+
service('router.request_context')->ignoreOnInvalid(),
153+
service('logger')->ignoreOnInvalid(),
154+
param('kernel.project_dir'),
155+
param('kernel.debug'),
156+
])
157+
->tag('kernel.event_subscriber')
158+
->tag('monolog.logger', ['channel' => 'request'])
159+
160+
->set(RedirectController::class)
161+
->public()
162+
->args([
163+
service('router'),
164+
inline_service('int')
165+
->factory([service('router.request_context'), 'getHttpPort']),
166+
inline_service('int')
167+
->factory([service('router.request_context'), 'getHttpsPort']),
168+
])
169+
170+
->set(TemplateController::class)
171+
->args([
172+
service('twig')->ignoreOnInvalid(),
173+
])
174+
->public()
175+
;
176+
};

Resources/config/routing.xml

Lines changed: 0 additions & 128 deletions
This file was deleted.

0 commit comments

Comments
 (0)