From c75dbca8f0d0b24f5343f79b480d2bb62041df88 Mon Sep 17 00:00:00 2001 From: Jules Pietri Date: Sat, 24 Sep 2022 19:18:41 +0200 Subject: [PATCH] [DependencyInjection][HttpKernel] Introduce build parameters --- UPGRADE-6.3.md | 10 ++++ .../DependencyInjection/CHANGELOG.md | 7 +++ .../Compiler/PassConfig.php | 14 +++-- .../Compiler/RemoveBuildParametersPass.php | 45 ++++++++++++++++ .../DependencyInjection/Dumper/PhpDumper.php | 30 +++++++++-- .../Exception/ParameterNotFoundException.php | 2 + .../RemoveBuildParametersPassTest.php | 33 ++++++++++++ .../Tests/Dumper/PhpDumperTest.php | 25 ++++----- .../php/services9_inlined_factories.txt | 2 - .../php/services9_lazy_inlined_factories.txt | 2 - .../Fixtures/php/services_inline_requires.php | 52 ------------------- .../Tests/ParameterBag/ParameterBagTest.php | 1 + src/Symfony/Component/HttpKernel/CHANGELOG.md | 5 ++ src/Symfony/Component/HttpKernel/Kernel.php | 26 ++++++++++ 14 files changed, 173 insertions(+), 81 deletions(-) create mode 100644 src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveBuildParametersPassTest.php diff --git a/UPGRADE-6.3.md b/UPGRADE-6.3.md index e1655bfa81b62..17e9002f0882e 100644 --- a/UPGRADE-6.3.md +++ b/UPGRADE-6.3.md @@ -1,6 +1,16 @@ UPGRADE FROM 6.2 to 6.3 ======================= +DependencyInjection +------------------- + + * Deprecate `PhpDumper` options `inline_factories_parameter` and `inline_class_loader_parameter`, use `inline_factories` and `inline_class_loader` instead + +HttpKernel +---------- + + * Deprecate parameters `container.dumper.inline_factories` and `container.dumper.inline_class_loader`, use `.container.dumper.inline_factories` and `.container.dumper.inline_class_loader` instead + SecurityBundle -------------- diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index b3626d02cc107..0282cd57f2823 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -1,6 +1,13 @@ CHANGELOG ========= +6.3 +--- + + * Add options `inline_factories` and `inline_class_loader` to `PhpDumper::dump()` + * Deprecate `PhpDumper` options `inline_factories_parameter` and `inline_class_loader_parameter` + * Add `RemoveBuildParametersPass`, which removes parameters starting with a dot during compilation + 6.2 --- diff --git a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php index 3acbe26de0d3c..624a97db8ae0a 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php @@ -90,11 +90,15 @@ public function __construct() new DefinitionErrorExceptionPass(), ]]; - $this->afterRemovingPasses = [[ - new ResolveHotPathPass(), - new ResolveNoPreloadPass(), - new AliasDeprecatedPublicServicesPass(), - ]]; + $this->afterRemovingPasses = [ + 0 => [ + new ResolveHotPathPass(), + new ResolveNoPreloadPass(), + new AliasDeprecatedPublicServicesPass(), + ], + // Let build parameters be available as late as possible + -2048 => [new RemoveBuildParametersPass()], + ]; } /** diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php new file mode 100644 index 0000000000000..44d9fa8c64225 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Compiler/RemoveBuildParametersPass.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; + +class RemoveBuildParametersPass implements CompilerPassInterface +{ + /** + * @var array + */ + private array $removedParameters = []; + + public function process(ContainerBuilder $container) + { + $parameterBag = $container->getParameterBag(); + $this->removedParameters = []; + + foreach ($parameterBag->all() as $name => $value) { + if ('.' === ($name[0] ?? '')) { + $this->removedParameters[$name] = $value; + + $parameterBag->remove($name); + $container->log($this, sprintf('Removing build parameter "%s".', $name)); + } + } + } + + /** + * @return array + */ + public function getRemovedParameters(): array + { + return $this->removedParameters; + } +} diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 4d827d53e28b7..0132446bda957 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -137,8 +137,10 @@ public function dump(array $options = []): string|array 'debug' => true, 'hot_path_tag' => 'container.hot_path', 'preload_tags' => ['container.preload', 'container.no_preload'], - 'inline_factories_parameter' => 'container.dumper.inline_factories', - 'inline_class_loader_parameter' => 'container.dumper.inline_class_loader', + 'inline_factories_parameter' => 'container.dumper.inline_factories', // @deprecated since Symfony 6.3 + 'inline_class_loader_parameter' => 'container.dumper.inline_class_loader', // @deprecated since Symfony 6.3 + 'inline_factories' => null, + 'inline_class_loader' => null, 'preload_classes' => [], 'service_locator_tag' => 'container.service_locator', 'build_time' => time(), @@ -149,8 +151,28 @@ public function dump(array $options = []): string|array $this->asFiles = $options['as_files']; $this->hotPathTag = $options['hot_path_tag']; $this->preloadTags = $options['preload_tags']; - $this->inlineFactories = $this->asFiles && $options['inline_factories_parameter'] && $this->container->hasParameter($options['inline_factories_parameter']) && $this->container->getParameter($options['inline_factories_parameter']); - $this->inlineRequires = $options['inline_class_loader_parameter'] && ($this->container->hasParameter($options['inline_class_loader_parameter']) ? $this->container->getParameter($options['inline_class_loader_parameter']) : $options['debug']); + + $this->inlineFactories = false; + if (isset($options['inline_factories'])) { + $this->inlineFactories = $this->asFiles && $options['inline_factories']; + } elseif (!$options['inline_factories_parameter']) { + trigger_deprecation('symfony/dependency-injection', '6.3', 'Option "inline_factories_parameter" passed to "%s()" is deprecated, use option "inline_factories" instead.', __METHOD__); + } elseif ($this->container->hasParameter($options['inline_factories_parameter'])) { + trigger_deprecation('symfony/dependency-injection', '6.3', 'Option "inline_factories_parameter" passed to "%s()" is deprecated, use option "inline_factories" instead.', __METHOD__); + $this->inlineFactories = $this->asFiles && $this->container->getParameter($options['inline_factories_parameter']); + } + + $this->inlineRequires = $options['debug']; + if (isset($options['inline_class_loader'])) { + $this->inlineRequires = $options['inline_class_loader']; + } elseif (!$options['inline_class_loader_parameter']) { + trigger_deprecation('symfony/dependency-injection', '6.3', 'Option "inline_class_loader_parameter" passed to "%s()" is deprecated, use option "inline_class_loader" instead.', __METHOD__); + $this->inlineRequires = false; + } elseif ($this->container->hasParameter($options['inline_class_loader_parameter'])) { + trigger_deprecation('symfony/dependency-injection', '6.3', 'Option "inline_class_loader_parameter" passed to "%s()" is deprecated, use option "inline_class_loader" instead.', __METHOD__); + $this->inlineRequires = $this->container->getParameter($options['inline_class_loader_parameter']); + } + $this->serviceLocatorTag = $options['service_locator_tag']; $this->class = $options['class']; diff --git a/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php b/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php index 71c36f6866411..e8f593187e9a7 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php @@ -53,6 +53,8 @@ public function updateRepr() $this->message = sprintf('The service "%s" has a dependency on a non-existent parameter "%s".', $this->sourceId, $this->key); } elseif (null !== $this->sourceKey) { $this->message = sprintf('The parameter "%s" has a dependency on a non-existent parameter "%s".', $this->sourceKey, $this->key); + } elseif ('.' === ($this->key[0] ?? '')) { + $this->message = sprintf('Parameter "%s" not found. It was probably deleted during the compilation of the container.', $this->key); } else { $this->message = sprintf('You have requested a non-existent parameter "%s".', $this->key); } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveBuildParametersPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveBuildParametersPassTest.php new file mode 100644 index 0000000000000..4bc3b78ec0b1f --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveBuildParametersPassTest.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Tests\Compiler; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\DependencyInjection\Compiler\RemoveBuildParametersPass; +use Symfony\Component\DependencyInjection\ContainerBuilder; + +class RemoveBuildParametersPassTest extends TestCase +{ + public function testBuildParametersShouldBeRemoved() + { + $builder = new ContainerBuilder(); + $builder->setParameter('foo', 'Foo'); + $builder->setParameter('.bar', 'Bar'); + + $pass = new RemoveBuildParametersPass(); + $pass->process($builder); + + $this->assertSame('Foo', $builder->getParameter('foo'), '"foo" parameter must be defined.'); + $this->assertFalse($builder->hasParameter('.bar'), '".bar" parameter must be removed.'); + $this->assertSame(['.bar' => 'Bar'], $pass->getRemovedParameters(), '".baz" parameter must be returned with its value.'); + } +} diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php index 12d5b80f8baf3..816787154a364 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php @@ -222,7 +222,7 @@ public function testDumpAsFiles() ->addError('No-no-no-no'); $container->compile(); $dumper = new PhpDumper($container); - $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'inline_factories_parameter' => false, 'inline_class_loader_parameter' => false]), true); + $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'inline_factories' => false, 'inline_class_loader' => false]), true); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); } @@ -241,7 +241,7 @@ public function testDumpAsFilesWithTypedReference() ->setPublic(true); $container->compile(); $dumper = new PhpDumper($container); - $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'inline_factories_parameter' => false, 'inline_class_loader_parameter' => false]), true); + $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'inline_factories' => false, 'inline_class_loader' => false]), true); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); } @@ -252,8 +252,6 @@ public function testDumpAsFilesWithTypedReference() public function testDumpAsFilesWithFactoriesInlined() { $container = include self::$fixturesPath.'/containers/container9.php'; - $container->setParameter('container.dumper.inline_factories', true); - $container->setParameter('container.dumper.inline_class_loader', true); $container->getDefinition('bar')->addTag('hot'); $container->register('non_shared_foo', \Bar\FooClass::class) @@ -268,7 +266,7 @@ public function testDumpAsFilesWithFactoriesInlined() $container->compile(); $dumper = new PhpDumper($container); - $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'build_time' => 1563381341]), true); + $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'build_time' => 1563381341, 'inline_factories' => true, 'inline_class_loader' => true]), true); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); @@ -279,8 +277,6 @@ public function testDumpAsFilesWithFactoriesInlined() public function testDumpAsFilesWithLazyFactoriesInlined() { $container = new ContainerBuilder(); - $container->setParameter('container.dumper.inline_factories', true); - $container->setParameter('container.dumper.inline_class_loader', true); $container->setParameter('lazy_foo_class', \Bar\FooClass::class); $container->register('lazy_foo', '%lazy_foo_class%') @@ -292,7 +288,7 @@ public function testDumpAsFilesWithLazyFactoriesInlined() $container->compile(); $dumper = new PhpDumper($container); - $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'build_time' => 1563381341]), true); + $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'hot_path_tag' => 'hot', 'build_time' => 1563381341, 'inline_factories' => true, 'inline_class_loader' => true]), true); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); @@ -310,7 +306,7 @@ public function testNonSharedLazyDumpAsFiles() ->setLazy(true); $container->compile(); $dumper = new PhpDumper($container); - $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'inline_factories_parameter' => false, 'inline_class_loader_parameter' => false]), true); + $dump = print_r($dumper->dump(['as_files' => true, 'file' => __DIR__, 'inline_factories' => false, 'inline_class_loader' => false]), true); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); @@ -473,7 +469,7 @@ public function testEnvParameter() $container->compile(); $dumper = new PhpDumper($container); - $this->assertStringEqualsFile(self::$fixturesPath.'/php/services26.php', $dumper->dump(['class' => 'Symfony_DI_PhpDumper_Test_EnvParameters', 'file' => self::$fixturesPath.'/php/services26.php', 'inline_factories_parameter' => false, 'inline_class_loader_parameter' => false])); + $this->assertStringEqualsFile(self::$fixturesPath.'/php/services26.php', $dumper->dump(['class' => 'Symfony_DI_PhpDumper_Test_EnvParameters', 'file' => self::$fixturesPath.'/php/services26.php', 'inline_factories' => false, 'inline_class_loader' => false])); require self::$fixturesPath.'/php/services26.php'; $container = new \Symfony_DI_PhpDumper_Test_EnvParameters(); @@ -994,7 +990,7 @@ public function testArrayParameters() $dumper = new PhpDumper($container); - $this->assertStringEqualsFile(self::$fixturesPath.'/php/services_array_params.php', str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dumper->dump(['file' => self::$fixturesPath.'/php/services_array_params.php', 'inline_factories_parameter' => false, 'inline_class_loader_parameter' => false]))); + $this->assertStringEqualsFile(self::$fixturesPath.'/php/services_array_params.php', str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dumper->dump(['file' => self::$fixturesPath.'/php/services_array_params.php', 'inline_factories' => false, 'inline_class_loader' => false]))); } public function testExpressionReferencingPrivateService() @@ -1162,11 +1158,10 @@ public function testInlineSelfRef() public function testHotPathOptimizations() { $container = include self::$fixturesPath.'/containers/container_inline_requires.php'; - $container->setParameter('inline_requires', true); $container->compile(); $dumper = new PhpDumper($container); - $dump = $dumper->dump(['hot_path_tag' => 'container.hot_path', 'inline_class_loader_parameter' => 'inline_requires', 'file' => self::$fixturesPath.'/php/services_inline_requires.php']); + $dump = $dumper->dump(['hot_path_tag' => 'container.hot_path', 'inline_class_loader' => true, 'file' => self::$fixturesPath.'/php/services_inline_requires.php']); if ('\\' === \DIRECTORY_SEPARATOR) { $dump = str_replace("'.\\DIRECTORY_SEPARATOR.'", '/', $dump); } @@ -1199,13 +1194,12 @@ public function testDumpHandlesObjectClassNames() new Reference('foo'), ]))->setPublic(true); - $container->setParameter('inline_requires', true); $container->compile(); $dumper = new PhpDumper($container); eval('?>'.$dumper->dump([ 'class' => 'Symfony_DI_PhpDumper_Test_Object_Class_Name', - 'inline_class_loader_parameter' => 'inline_requires', + 'inline_class_loader' => true, ])); $container = new \Symfony_DI_PhpDumper_Test_Object_Class_Name(); @@ -1281,7 +1275,6 @@ public function testUninitializedSyntheticReference() $dumper = new PhpDumper($container); eval('?>'.$dumper->dump([ 'class' => 'Symfony_DI_PhpDumper_Test_UninitializedSyntheticReference', - 'inline_class_loader_parameter' => 'inline_requires', ])); $container = new \Symfony_DI_PhpDumper_Test_UninitializedSyntheticReference(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt index 230bb357db000..137506abdf4b0 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt @@ -557,8 +557,6 @@ class ProjectServiceContainer extends Container 'baz_class' => 'BazClass', 'foo_class' => 'Bar\\FooClass', 'foo' => 'bar', - 'container.dumper.inline_factories' => true, - 'container.dumper.inline_class_loader' => true, ]; } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt index 7af59984549ae..aa8c5da006f30 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt @@ -143,8 +143,6 @@ class ProjectServiceContainer extends Container protected function getDefaultParameters(): array { return [ - 'container.dumper.inline_factories' => true, - 'container.dumper.inline_class_loader' => true, 'lazy_foo_class' => 'Bar\\FooClass', ]; } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_inline_requires.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_inline_requires.php index 386e5a5d0d739..d0509ad594369 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_inline_requires.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_inline_requires.php @@ -18,8 +18,6 @@ class ProjectServiceContainer extends Container public function __construct() { - $this->parameters = $this->getDefaultParameters(); - $this->services = $this->privates = []; $this->methodMap = [ 'Symfony\\Component\\DependencyInjection\\Tests\\Fixtures\\ParentNotExists' => 'getParentNotExistsService', @@ -86,54 +84,4 @@ protected function getC2Service() return $this->services['Symfony\\Component\\DependencyInjection\\Tests\\Fixtures\\includes\\HotPath\\C2'] = new \Symfony\Component\DependencyInjection\Tests\Fixtures\includes\HotPath\C2(new \Symfony\Component\DependencyInjection\Tests\Fixtures\includes\HotPath\C3()); } - - public function getParameter(string $name): array|bool|string|int|float|\UnitEnum|null - { - if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || \array_key_exists($name, $this->parameters))) { - throw new ParameterNotFoundException($name); - } - if (isset($this->loadedDynamicParameters[$name])) { - return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); - } - - return $this->parameters[$name]; - } - - public function hasParameter(string $name): bool - { - return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || \array_key_exists($name, $this->parameters); - } - - public function setParameter(string $name, $value): void - { - throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); - } - - public function getParameterBag(): ParameterBagInterface - { - if (null === $this->parameterBag) { - $parameters = $this->parameters; - foreach ($this->loadedDynamicParameters as $name => $loaded) { - $parameters[$name] = $loaded ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); - } - $this->parameterBag = new FrozenParameterBag($parameters); - } - - return $this->parameterBag; - } - - private $loadedDynamicParameters = []; - private $dynamicParameters = []; - - private function getDynamicParameter(string $name) - { - throw new ParameterNotFoundException($name); - } - - protected function getDefaultParameters(): array - { - return [ - 'inline_requires' => true, - ]; - } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php index 7539da5d2ae6b..e97ec063e52a8 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php @@ -121,6 +121,7 @@ public function provideGetThrowParameterNotFoundExceptionData() ['', 'You have requested a non-existent parameter "".'], ['fiz.bar.boo', 'You have requested a non-existent parameter "fiz.bar.boo". You cannot access nested array items, do you want to inject "fiz" instead?'], + ['.foo', 'Parameter ".foo" not found. It was probably deleted during the compilation of the container. Did you mean this: "foo"?'], ]; } diff --git a/src/Symfony/Component/HttpKernel/CHANGELOG.md b/src/Symfony/Component/HttpKernel/CHANGELOG.md index 2a5aad623bfeb..3122668e697cb 100644 --- a/src/Symfony/Component/HttpKernel/CHANGELOG.md +++ b/src/Symfony/Component/HttpKernel/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.3 +--- + + * Deprecate parameters `container.dumper.inline_factories` and `container.dumper.inline_class_loader`, use `.container.dumper.inline_factories` and `.container.dumper.inline_class_loader` instead + 6.2 --- diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 20a47dce86719..96bb3d6a9627c 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -17,6 +17,7 @@ use Symfony\Component\Config\Loader\LoaderResolver; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\PassConfig; +use Symfony\Component\DependencyInjection\Compiler\RemoveBuildParametersPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Dumper\PhpDumper; @@ -648,12 +649,37 @@ protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container // cache the container $dumper = new PhpDumper($container); + $buildParameters = []; + foreach ($container->getCompilerPassConfig()->getPasses() as $pass) { + if ($pass instanceof RemoveBuildParametersPass) { + $buildParameters = array_merge($buildParameters, $pass->getRemovedParameters()); + } + } + + $inlineFactories = false; + if (isset($buildParameters['.container.dumper.inline_factories'])) { + $inlineFactories = $buildParameters['.container.dumper.inline_factories']; + } elseif ($container->hasParameter('container.dumper.inline_factories')) { + trigger_deprecation('symfony/http-kernel', '6.3', 'Parameter "%s" is deprecated, use ".%$1s" instead.', 'container.dumper.inline_factories'); + $inlineFactories = $container->getParameter('container.dumper.inline_factories'); + } + + $inlineClassLoader = $this->debug; + if (isset($buildParameters['.container.dumper.inline_class_loader'])) { + $inlineClassLoader = $buildParameters['.container.dumper.inline_class_loader']; + } elseif ($container->hasParameter('container.dumper.inline_class_loader')) { + trigger_deprecation('symfony/http-kernel', '6.3', 'Parameter "%s" is deprecated, use ".%$1s" instead.', 'container.dumper.inline_class_loader'); + $inlineClassLoader = $container->getParameter('container.dumper.inline_class_loader'); + } + $content = $dumper->dump([ 'class' => $class, 'base_class' => $baseClass, 'file' => $cache->getPath(), 'as_files' => true, 'debug' => $this->debug, + 'inline_factories' => $inlineFactories, + 'inline_class_loader' => $inlineClassLoader, 'build_time' => $container->hasParameter('kernel.container_build_time') ? $container->getParameter('kernel.container_build_time') : time(), 'preload_classes' => array_map('get_class', $this->bundles), ]); 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