From 92b333acdc8304e62beb110b4399e9cee2910605 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 10 May 2020 12:35:43 +0200 Subject: [PATCH] [Twig] Move configuration to PHP --- .../DependencyInjection/TwigExtension.php | 12 +- .../TwigBundle/Resources/config/console.php | 24 +++ .../TwigBundle/Resources/config/console.xml | 24 --- .../TwigBundle/Resources/config/form.php | 21 +++ .../TwigBundle/Resources/config/form.xml | 27 ---- .../TwigBundle/Resources/config/mailer.php | 17 ++ .../TwigBundle/Resources/config/mailer.xml | 18 --- .../TwigBundle/Resources/config/twig.php | 146 +++++++++++++++++ .../TwigBundle/Resources/config/twig.xml | 153 ------------------ 9 files changed, 214 insertions(+), 228 deletions(-) create mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/console.php delete mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/console.xml create mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/form.php delete mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/form.xml create mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/mailer.php delete mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/mailer.xml create mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/twig.php delete mode 100644 src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php index a70fd31afe3f8..13826834c02be 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php @@ -15,7 +15,7 @@ use Symfony\Component\Config\Resource\FileExistenceResource; use Symfony\Component\Console\Application; use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\Mailer\Mailer; @@ -34,19 +34,19 @@ class TwigExtension extends Extension { public function load(array $configs, ContainerBuilder $container) { - $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('twig.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('twig.php'); if (class_exists('Symfony\Component\Form\Form')) { - $loader->load('form.xml'); + $loader->load('form.php'); } if (class_exists(Application::class)) { - $loader->load('console.xml'); + $loader->load('console.php'); } if (class_exists(Mailer::class)) { - $loader->load('mailer.xml'); + $loader->load('mailer.php'); } if (!class_exists(Translator::class)) { diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/console.php b/src/Symfony/Bundle/TwigBundle/Resources/config/console.php new file mode 100644 index 0000000000000..3623b9bfabbd0 --- /dev/null +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/console.php @@ -0,0 +1,24 @@ +services()->defaults()->private() + + ->set('twig.command.debug', DebugCommand::class) + ->args([ + di\ref('twig'), + '%kernel.project_dir%', + '%kernel.bundles_metadata%', + '%twig.default_path%', + di\ref('debug.file_link_formatter')->nullOnInvalid(), + ]) + ->tag('console.command', ['command' => 'debug:twig']) + + ->set('twig.command.lint', LintCommand::class) + ->args([di\ref('twig')]) + ->tag('console.command', ['command' => 'lint:twig']) + ; +}; diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/console.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/console.xml deleted file mode 100644 index 68afbcc30f2c6..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/console.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - %kernel.project_dir% - %kernel.bundles_metadata% - %twig.default_path% - - - - - - - - - - diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/form.php b/src/Symfony/Bundle/TwigBundle/Resources/config/form.php new file mode 100644 index 0000000000000..29f168c97c709 --- /dev/null +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/form.php @@ -0,0 +1,21 @@ +services()->defaults()->private() + + ->set('twig.extension.form', FormExtension::class) + ->args([[di\ref('service_container'), 'twig.form.renderer']]) + + ->set('twig.form.engine', TwigRendererEngine::class) + ->args(['%twig.form.resources%', di\ref('twig')]) + + ->set('twig.form.renderer', FormRenderer::class) + ->args([di\ref('twig.form.engine', di\ref('security.csrf.token_manager')->nullOnInvalid())]) + ->tag('twig.runtime') + ; +}; diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml deleted file mode 100644 index 4177da62de513..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - twig.form.renderer - - - - - %twig.form.resources% - - - - - - - - - - diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.php b/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.php new file mode 100644 index 0000000000000..48b4d140d9ff5 --- /dev/null +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.php @@ -0,0 +1,17 @@ +services()->defaults()->private() + + ->set('twig.mailer.message_listener', MessageListener::class) + ->args([null, di\ref('twig.mime_body_renderer')]) + ->tag('kernel.event_subscriber') + + ->set('twig.mime_body_renderer', BodyRenderer::class) + ->args([di\ref('twig')]) + ; +}; diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.xml deleted file mode 100644 index 0e425952ffe59..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/mailer.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - null - - - - - - - - - diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.php b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.php new file mode 100644 index 0000000000000..83362ccde3d38 --- /dev/null +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.php @@ -0,0 +1,146 @@ +services()->defaults()->private() + + ->set('twig', Environment::class) + ->public() + ->args([di\ref('twig.loader'), null /* Twig options */]) + ->call('addGlobal', ['app', di\ref('twig.app_variable')]) + ->call('addRuntimeLoader', [di\ref('twig.runtime_loader')]) + ->configurator([di\ref('twig.configurator.environment'), 'configure']) + ->tag('container.preload', ['class' => 'Twig\Cache\FilesystemCache']) + ->tag('container.preload', ['class' => 'Twig\Extension\CoreExtension']) + ->tag('container.preload', ['class' => 'Twig\Extension\EscaperExtension']) + ->tag('container.preload', ['class' => 'Twig\Extension\OptimizerExtension']) + ->tag('container.preload', ['class' => 'Twig\Extension\StagingExtension']) + ->tag('container.preload', ['class' => 'Twig\ExtensionSet']) + ->tag('container.preload', ['class' => 'Twig\Template']) + ->tag('container.preload', ['class' => 'Twig\TemplateWrapper']) + + ->alias('\Twig_Environment', 'twig') + ->alias(Environment::class, 'twig') + + ->set('twig.app_variable', AppVariable::class) + ->call('setEnvironment', ['%kernel.environment%']) + ->call('setDebug', ['%kernel.debug%']) + ->call('setTokenStorage', [di\ref('security.token_storage')->ignoreOnInvalid()]) + ->call('setRequestStack', [di\ref('request_stack')->ignoreOnInvalid()]) + + ->set('twig.template_iterator', TemplateIterator::class) + ->args([di\ref('kernel'), [] /* Twig paths */, '%twig.default_path%']) + + ->set('twig.template_cache_warmer', TemplateCacheWarmer::class) + ->args([di\ref('Psr\Container\ContainerInterface'), di\ref('twig.template_iterator')]) + ->tag('kernel.cache_warmer') + ->tag('container.service_subscriber', ['id' => 'twig']) + + ->set('twig.loader.native_filesystem', FilesystemLoader::class) + ->args([[] /* paths */, '%kernel.project_dir%']) + ->tag('twig.loader') + + ->set('twig.loader.chain', ChainLoader::class) + + ->set('twig.extension.profiler', ProfilerExtension::class) + ->args([di\ref('twig.profile'), di\ref('debug.stopwatch')->ignoreOnInvalid()]) + + ->set('twig.profile', Profile::class) + + ->set('data_collector.twig', TwigDataCollector::class) + ->args([di\ref('twig.profile'), di\ref('twig')]) + ->tag('data_collector', ['template' => '@WebProfiler/Collector/twig.html.twig', 'id' => 'twig', 'priority' => 257]) + + ->set('twig.extension.trans', TranslationExtension::class) + ->args([di\ref('translation')->nullOnInvalid()]) + ->tag('twig.extension') + + ->set('twig.extension.assets', AssetExtension::class) + ->args([di\ref('assets.package')]) + + ->set('twig.extension.code', CodeExtension::class) + ->args([di\ref('debug.file_link_formatter')->ignoreOnInvalid(), '%kernel.project_dir%', '%kernel.charset%']) + ->tag('twig.extension') + + ->set('twig.extension.routing', RoutingExtension::class) + ->args([di\ref('router')]) + + ->set('twig.extension.yaml', YamlExtension::class) + + ->set('twig.extension.debug.stopwatch', StopwatchExtension::class) + ->args([di\ref('debug.stopwatch')->ignoreOnInvalid(), '%kernel.debug%']) + + ->set('twig.extension.expression', ExpressionExtension::class) + + ->set('twig.extension.httpkernel', HttpKernelExtension::class) + + ->set('twig.runtime.httpkernel', HttpKernelRuntime::class) + ->args([di\ref('fragment.handler')]) + + ->set('twig.extension.httpfoundation', HttpFoundationExtension::class) + ->args([di\ref('url_helper')]) + + ->set('twig.extension.debug', DebugExtension::class) + + ->set('twig.extension.weblink', WebLinkExtension::class) + ->args([di\ref('request_stack')]) + + ->set('twig.translation.extractor', TwigExtractor::class) + ->args([di\ref('twig')]) + ->tag('translation.extractor', ['alias' => 'twig']) + + ->set('workflow.twig_extension', WorkflowExtension::class) + ->args([di\ref('workflow.registry')]) + + ->set('twig.configurator.environment', EnvironmentConfigurator::class) + ->args([ + '', /* date format, set in TwigExtension */ + '', /* interval format, set in TwigExtension */ + '', /* timezone, set in TwigExtension */ + '', /* decimals, set in TwigExtension */ + '', /* decimal point, set in TwigExtension */ + '', /* thousands separator, set in TwigExtension */ + ]) + + ->set('twig.runtime_loader', ContainerRuntimeLoader::class) + ->args(['' /* runtime locator */]) + + ->set('twig.error_renderer.html', TwigErrorRenderer::class) + ->decorate('error_renderer.html') + ->args([ + di\ref('twig'), + di\ref('twig.error_renderer.html.inner'), + di\service(TwigErrorRenderer::class) + ->factory([TwigErrorRenderer::class, 'isDebug']) + ->args([di\ref('request_stack'), '%kernel.debug%']), + ]) + + ; +}; diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml deleted file mode 100644 index cb30219365e4e..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - app - - - - - - - - - - - - - - - - - - - - %kernel.environment% - %kernel.debug% - - - - - - - - %twig.default_path% - - - - - - - - - - - - %kernel.project_dir% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %kernel.project_dir% - %kernel.charset% - - - - - - - - - - - %kernel.debug% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %kernel.debug% - - - - -