Skip to content

Commit 4bd07a8

Browse files
committed
[Twig] Move configuration to PHP
1 parent 1871889 commit 4bd07a8

File tree

9 files changed

+217
-228
lines changed

9 files changed

+217
-228
lines changed

src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Symfony\Component\Config\Resource\FileExistenceResource;
1616
use Symfony\Component\Console\Application;
1717
use Symfony\Component\DependencyInjection\ContainerBuilder;
18-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
18+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1919
use Symfony\Component\DependencyInjection\Reference;
2020
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
2121
use Symfony\Component\Mailer\Mailer;
@@ -34,19 +34,19 @@ class TwigExtension extends Extension
3434
{
3535
public function load(array $configs, ContainerBuilder $container)
3636
{
37-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
38-
$loader->load('twig.xml');
37+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
38+
$loader->load('twig.php');
3939

4040
if (class_exists('Symfony\Component\Form\Form')) {
41-
$loader->load('form.xml');
41+
$loader->load('form.php');
4242
}
4343

4444
if (class_exists(Application::class)) {
45-
$loader->load('console.xml');
45+
$loader->load('console.php');
4646
}
4747

4848
if (class_exists(Mailer::class)) {
49-
$loader->load('mailer.xml');
49+
$loader->load('mailer.php');
5050
}
5151

5252
if (!class_exists(Translator::class)) {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Symfony\Bridge\Twig\Command\DebugCommand;
6+
use Symfony\Bundle\TwigBundle\Command\LintCommand;
7+
8+
return static function (ContainerConfigurator $container) {
9+
$container->services()
10+
11+
->set('twig.command.debug', DebugCommand::class)
12+
->args([
13+
ref('twig'),
14+
param('kernel.project_dir'),
15+
param('kernel.bundles_metadata'),
16+
param('twig.default_path'),
17+
ref('debug.file_link_formatter')->nullOnInvalid(),
18+
])
19+
->tag('console.command', ['command' => 'debug:twig'])
20+
21+
->set('twig.command.lint', LintCommand::class)
22+
->args([ref('twig')])
23+
->tag('console.command', ['command' => 'lint:twig'])
24+
;
25+
};

src/Symfony/Bundle/TwigBundle/Resources/config/console.xml

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Symfony\Bridge\Twig\Extension\FormExtension;
6+
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
7+
use Symfony\Component\Form\FormRenderer;
8+
9+
return static function (ContainerConfigurator $container) {
10+
$container->services()
11+
12+
->set('twig.extension.form', FormExtension::class)
13+
14+
->set('twig.form.engine', TwigRendererEngine::class)
15+
->args([param('twig.form.resources'), ref('twig')])
16+
17+
->set('twig.form.renderer', FormRenderer::class)
18+
->args([ref('twig.form.engine', ref('security.csrf.token_manager')->nullOnInvalid())])
19+
->tag('twig.runtime')
20+
;
21+
};

src/Symfony/Bundle/TwigBundle/Resources/config/form.xml

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Symfony\Bridge\Twig\Mime\BodyRenderer;
6+
use Symfony\Component\Mailer\EventListener\MessageListener;
7+
8+
return static function (ContainerConfigurator $container) {
9+
$container->services()
10+
11+
->set('twig.mailer.message_listener', MessageListener::class)
12+
->args([null, ref('twig.mime_body_renderer')])
13+
->tag('kernel.event_subscriber')
14+
15+
->set('twig.mime_body_renderer', BodyRenderer::class)
16+
->args([ref('twig')])
17+
;
18+
};

src/Symfony/Bundle/TwigBundle/Resources/config/mailer.xml

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Symfony\Bridge\Twig\AppVariable;
6+
use Symfony\Bridge\Twig\DataCollector\TwigDataCollector;
7+
use Symfony\Bridge\Twig\ErrorRenderer\TwigErrorRenderer;
8+
use Symfony\Bridge\Twig\Extension\AssetExtension;
9+
use Symfony\Bridge\Twig\Extension\CodeExtension;
10+
use Symfony\Bridge\Twig\Extension\ExpressionExtension;
11+
use Symfony\Bridge\Twig\Extension\HttpFoundationExtension;
12+
use Symfony\Bridge\Twig\Extension\HttpKernelExtension;
13+
use Symfony\Bridge\Twig\Extension\HttpKernelRuntime;
14+
use Symfony\Bridge\Twig\Extension\ProfilerExtension;
15+
use Symfony\Bridge\Twig\Extension\RoutingExtension;
16+
use Symfony\Bridge\Twig\Extension\StopwatchExtension;
17+
use Symfony\Bridge\Twig\Extension\TranslationExtension;
18+
use Symfony\Bridge\Twig\Extension\WebLinkExtension;
19+
use Symfony\Bridge\Twig\Extension\WorkflowExtension;
20+
use Symfony\Bridge\Twig\Extension\YamlExtension;
21+
use Symfony\Bridge\Twig\Translation\TwigExtractor;
22+
use Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer;
23+
use Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator;
24+
use Symfony\Bundle\TwigBundle\TemplateIterator;
25+
use Twig\Environment;
26+
use Twig\Extension\DebugExtension;
27+
use Twig\Loader\ChainLoader;
28+
use Twig\Loader\FilesystemLoader;
29+
use Twig\Profiler\Profile;
30+
use Twig\RuntimeLoader\ContainerRuntimeLoader;
31+
32+
return static function (ContainerConfigurator $container) {
33+
$container->services()
34+
35+
->set('twig', Environment::class)
36+
->public()
37+
->args([ref('twig.loader'), abstract_arg('Twig options')])
38+
->call('addGlobal', ['app', ref('twig.app_variable')])
39+
->call('addRuntimeLoader', [ref('twig.runtime_loader')])
40+
->configurator([ref('twig.configurator.environment'), 'configure'])
41+
->tag('container.preload', ['class' => 'Twig\Cache\FilesystemCache'])
42+
->tag('container.preload', ['class' => 'Twig\Extension\CoreExtension'])
43+
->tag('container.preload', ['class' => 'Twig\Extension\EscaperExtension'])
44+
->tag('container.preload', ['class' => 'Twig\Extension\OptimizerExtension'])
45+
->tag('container.preload', ['class' => 'Twig\Extension\StagingExtension'])
46+
->tag('container.preload', ['class' => 'Twig\ExtensionSet'])
47+
->tag('container.preload', ['class' => 'Twig\Template'])
48+
->tag('container.preload', ['class' => 'Twig\TemplateWrapper'])
49+
50+
->alias('Twig_Environment', 'twig')
51+
->alias(Environment::class, 'twig')
52+
53+
->set('twig.app_variable', AppVariable::class)
54+
->call('setEnvironment', [param('kernel.environment')])
55+
->call('setDebug', [param('kernel.debug')])
56+
->call('setTokenStorage', [ref('security.token_storage')->ignoreOnInvalid()])
57+
->call('setRequestStack', [ref('request_stack')->ignoreOnInvalid()])
58+
59+
->set('twig.template_iterator', TemplateIterator::class)
60+
->args([ref('kernel'), abstract_arg('Twig paths'), param('twig.default_path')])
61+
62+
->set('twig.template_cache_warmer', TemplateCacheWarmer::class)
63+
->args([ref('Psr\Container\ContainerInterface'), ref('twig.template_iterator')])
64+
->tag('kernel.cache_warmer')
65+
->tag('container.service_subscriber', ['id' => 'twig'])
66+
67+
->set('twig.loader.native_filesystem', FilesystemLoader::class)
68+
->args([[], param('kernel.project_dir')])
69+
->tag('twig.loader')
70+
71+
->set('twig.loader.chain', ChainLoader::class)
72+
73+
->set('twig.extension.profiler', ProfilerExtension::class)
74+
->args([ref('twig.profile'), ref('debug.stopwatch')->ignoreOnInvalid()])
75+
76+
->set('twig.profile', Profile::class)
77+
78+
->set('data_collector.twig', TwigDataCollector::class)
79+
->args([ref('twig.profile'), ref('twig')])
80+
->tag('data_collector', ['template' => '@WebProfiler/Collector/twig.html.twig', 'id' => 'twig', 'priority' => 257])
81+
82+
->set('twig.extension.trans', TranslationExtension::class)
83+
->args([ref('translation')->nullOnInvalid()])
84+
->tag('twig.extension')
85+
86+
->set('twig.extension.assets', AssetExtension::class)
87+
->args([ref('assets.package')])
88+
89+
->set('twig.extension.code', CodeExtension::class)
90+
->args([ref('debug.file_link_formatter')->ignoreOnInvalid(), param('kernel.project_dir'), param('kernel.charset')])
91+
->tag('twig.extension')
92+
93+
->set('twig.extension.routing', RoutingExtension::class)
94+
->args([ref('router')])
95+
96+
->set('twig.extension.yaml', YamlExtension::class)
97+
98+
->set('twig.extension.debug.stopwatch', StopwatchExtension::class)
99+
->args([ref('debug.stopwatch')->ignoreOnInvalid(), param('kernel.debug')])
100+
101+
->set('twig.extension.expression', ExpressionExtension::class)
102+
103+
->set('twig.extension.httpkernel', HttpKernelExtension::class)
104+
105+
->set('twig.runtime.httpkernel', HttpKernelRuntime::class)
106+
->args([ref('fragment.handler')])
107+
108+
->set('twig.extension.httpfoundation', HttpFoundationExtension::class)
109+
->args([ref('url_helper')])
110+
111+
->set('twig.extension.debug', DebugExtension::class)
112+
113+
->set('twig.extension.weblink', WebLinkExtension::class)
114+
->args([ref('request_stack')])
115+
116+
->set('twig.translation.extractor', TwigExtractor::class)
117+
->args([ref('twig')])
118+
->tag('translation.extractor', ['alias' => 'twig'])
119+
120+
->set('workflow.twig_extension', WorkflowExtension::class)
121+
->args([ref('workflow.registry')])
122+
123+
->set('twig.configurator.environment', EnvironmentConfigurator::class)
124+
->args([
125+
abstract_arg('date format, set in TwigExtension'),
126+
abstract_arg('interval format, set in TwigExtension'),
127+
abstract_arg('timezone, set in TwigExtension'),
128+
abstract_arg('decimals, set in TwigExtension'),
129+
abstract_arg('decimal point, set in TwigExtension'),
130+
abstract_arg('thousands separator, set in TwigExtension'),
131+
])
132+
133+
->set('twig.runtime_loader', ContainerRuntimeLoader::class)
134+
->args([abstract_arg('runtime locator')])
135+
136+
->set('twig.error_renderer.html', TwigErrorRenderer::class)
137+
->decorate('error_renderer.html')
138+
->args([
139+
ref('twig'),
140+
ref('twig.error_renderer.html.inner'),
141+
service(TwigErrorRenderer::class)
142+
->factory([TwigErrorRenderer::class, 'isDebug'])
143+
->args([ref('request_stack'), param('kernel.debug')]),
144+
])
145+
146+
;
147+
};

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy