[FrameworkBundle] Move debug configuration to PHP

This commit is contained in:
Benoit Mallo 2020-06-11 14:15:19 +02:00 committed by Fabien Potencier
parent 8df6380fc7
commit a226a52d65
5 changed files with 94 additions and 70 deletions

View File

@ -371,7 +371,7 @@ class FrameworkExtension extends Extension
$this->registerTranslatorConfiguration($config['translator'], $container, $loader, $config['default_locale']);
$this->registerProfilerConfiguration($config['profiler'], $container, $loader);
$this->registerWorkflowConfiguration($config['workflows'], $container, $loader);
$this->registerDebugConfiguration($config['php_errors'], $container, $loader);
$this->registerDebugConfiguration($config['php_errors'], $container, $phpLoader);
$this->registerRouterConfiguration($config['router'], $container, $loader, $config['translator']['enabled_locales'] ?? []);
$this->registerAnnotationsConfiguration($config['annotations'], $container, $loader);
$this->registerPropertyAccessConfiguration($config['property_access'], $container, $loader);
@ -821,9 +821,9 @@ class FrameworkExtension extends Extension
}
}
private function registerDebugConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
private function registerDebugConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader)
{
$loader->load('debug_prod.xml');
$loader->load('debug_prod.php');
if (class_exists(Stopwatch::class)) {
$container->register('debug.stopwatch', Stopwatch::class)
@ -840,7 +840,7 @@ class FrameworkExtension extends Extension
}
if ($debug && class_exists(Stopwatch::class)) {
$loader->load('debug.xml');
$loader->load('debug.php');
}
$definition = $container->findDefinition('debug.debug_handlers_listener');

View File

@ -0,0 +1,50 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\NotTaggedControllerValueResolver;
use Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver;
use Symfony\Component\HttpKernel\Controller\TraceableControllerResolver;
use Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher;
return static function (ContainerConfigurator $container) {
$container->services()
->set('debug.event_dispatcher', TraceableEventDispatcher::class)
->decorate('event_dispatcher')
->args([
service('debug.event_dispatcher.inner'),
service('debug.stopwatch'),
service('logger')->nullOnInvalid(),
service('request_stack')->nullOnInvalid(),
])
->tag('monolog.logger', ['channel' => 'event'])
->tag('kernel.reset', ['method' => 'reset'])
->set('debug.controller_resolver', TraceableControllerResolver::class)
->decorate('controller_resolver')
->args([
service('debug.controller_resolver.inner'),
service('debug.stopwatch'),
])
->set('debug.argument_resolver', TraceableArgumentResolver::class)
->decorate('argument_resolver')
->args([
service('debug.argument_resolver.inner'),
service('debug.stopwatch'),
])
->set('argument_resolver.not_tagged_controller', NotTaggedControllerValueResolver::class)
->args([abstract_arg('Controller argument, set in FrameworkExtension')])
->tag('controller.argument_value_resolver', ['priority' => -200])
;
};

View File

@ -1,34 +0,0 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<defaults public="false" />
<service id="debug.event_dispatcher" class="Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher" decorates="event_dispatcher">
<tag name="monolog.logger" channel="event" />
<tag name="kernel.reset" method="reset" />
<argument type="service" id="debug.event_dispatcher.inner" />
<argument type="service" id="debug.stopwatch" />
<argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="request_stack" on-invalid="null" />
</service>
<service id="debug.controller_resolver" decorates="controller_resolver" class="Symfony\Component\HttpKernel\Controller\TraceableControllerResolver">
<argument type="service" id="debug.controller_resolver.inner" />
<argument type="service" id="debug.stopwatch" />
</service>
<service id="debug.argument_resolver" decorates="argument_resolver" class="Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver">
<argument type="service" id="debug.argument_resolver.inner" />
<argument type="service" id="debug.stopwatch" />
</service>
<service id="argument_resolver.not_tagged_controller" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\NotTaggedControllerValueResolver">
<tag name="controller.argument_value_resolver" priority="-200" />
<argument />
</service>
</services>
</container>

View File

@ -0,0 +1,40 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener;
return static function (ContainerConfigurator $container) {
$container->parameters()->set('debug.error_handler.throw_at', -1);
$container->services()
->set('debug.debug_handlers_listener', DebugHandlersListener::class)
->args([
null, // Exception handler
service('monolog.logger.php')->nullOnInvalid(),
null, // Log levels map for enabled error levels
param('debug.error_handler.throw_at'),
param('kernel.debug'),
service('debug.file_link_formatter'),
param('kernel.debug'),
service('monolog.logger.deprecation')->nullOnInvalid(),
])
->tag('kernel.event_subscriber')
->tag('monolog.logger', ['channel' => 'php'])
->set('debug.file_link_formatter', FileLinkFormatter::class)
->args([param('debug.file_link_format')])
->alias(FileLinkFormatter::class, 'debug.file_link_formatter')
;
};

View File

@ -1,32 +0,0 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="debug.error_handler.throw_at">-1</parameter>
</parameters>
<services>
<defaults public="false" />
<service id="debug.debug_handlers_listener" class="Symfony\Component\HttpKernel\EventListener\DebugHandlersListener">
<tag name="kernel.event_subscriber" />
<tag name="monolog.logger" channel="php" />
<argument>null</argument><!-- Exception handler -->
<argument type="service" id="monolog.logger.php" on-invalid="null" />
<argument>null</argument><!-- Log levels map for enabled error levels -->
<argument>%debug.error_handler.throw_at%</argument>
<argument>%kernel.debug%</argument>
<argument type="service" id="debug.file_link_formatter" />
<argument>%kernel.debug%</argument>
<argument type="service" id="monolog.logger.deprecation" on-invalid="null" />
</service>
<service id="debug.file_link_formatter" class="Symfony\Component\HttpKernel\Debug\FileLinkFormatter">
<argument>%debug.file_link_format%</argument>
</service>
<service id="Symfony\Component\HttpKernel\Debug\FileLinkFormatter" alias="debug.file_link_formatter" />
</services>
</container>