function MergeExtensionConfigurationPass::process
Same name in this branch
- 11.1.x vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php \Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass::process()
Overrides CompilerPassInterface::process
2 calls to MergeExtensionConfigurationPass::process()
- MergeExtensionConfigurationPass::process in vendor/
symfony/ http-kernel/ DependencyInjection/ MergeExtensionConfigurationPass.php - You can modify the container here before it is dumped to PHP code.
- MergeExtensionConfigurationPass::process in vendor/
symfony/ http-kernel/ DependencyInjection/ MergeExtensionConfigurationPass.php - You can modify the container here before it is dumped to PHP code.
1 method overrides MergeExtensionConfigurationPass::process()
- MergeExtensionConfigurationPass::process in vendor/
symfony/ http-kernel/ DependencyInjection/ MergeExtensionConfigurationPass.php - You can modify the container here before it is dumped to PHP code.
File
-
vendor/
symfony/ dependency-injection/ Compiler/ MergeExtensionConfigurationPass.php, line 33
Class
- MergeExtensionConfigurationPass
- Merges extension configs into the container builder.
Namespace
Symfony\Component\DependencyInjection\CompilerCode
public function process(ContainerBuilder $container) : void {
$parameters = $container->getParameterBag()
->all();
$definitions = $container->getDefinitions();
$aliases = $container->getAliases();
$exprLangProviders = $container->getExpressionLanguageProviders();
$configAvailable = class_exists(BaseNode::class);
foreach ($container->getExtensions() as $extension) {
if ($extension instanceof PrependExtensionInterface) {
$extension->prepend($container);
}
}
foreach ($container->getExtensions() as $name => $extension) {
if (!($config = $container->getExtensionConfig($name))) {
// this extension was not called
continue;
}
$resolvingBag = $container->getParameterBag();
if ($resolvingBag instanceof EnvPlaceholderParameterBag && $extension instanceof Extension) {
// create a dedicated bag so that we can track env vars per-extension
$resolvingBag = new MergeExtensionConfigurationParameterBag($resolvingBag);
if ($configAvailable) {
BaseNode::setPlaceholderUniquePrefix($resolvingBag->getEnvPlaceholderUniquePrefix());
}
}
try {
$config = $resolvingBag->resolveValue($config);
} catch (ParameterNotFoundException $e) {
$e->setSourceExtensionName($name);
throw $e;
}
try {
$tmpContainer = new MergeExtensionConfigurationContainerBuilder($extension, $resolvingBag);
$tmpContainer->setResourceTracking($container->isTrackingResources());
$tmpContainer->addObjectResource($extension);
if ($extension instanceof ConfigurationExtensionInterface && null !== ($configuration = $extension->getConfiguration($config, $tmpContainer))) {
$tmpContainer->addObjectResource($configuration);
}
foreach ($exprLangProviders as $provider) {
$tmpContainer->addExpressionLanguageProvider($provider);
}
$extension->load($config, $tmpContainer);
} catch (\Exception $e) {
if ($resolvingBag instanceof MergeExtensionConfigurationParameterBag) {
$container->getParameterBag()
->mergeEnvPlaceholders($resolvingBag);
}
throw $e;
}
if ($resolvingBag instanceof MergeExtensionConfigurationParameterBag) {
// don't keep track of env vars that are *overridden* when configs are merged
$resolvingBag->freezeAfterProcessing($extension, $tmpContainer);
}
$container->merge($tmpContainer);
$container->getParameterBag()
->add($parameters);
}
$container->addDefinitions($definitions);
$container->addAliases($aliases);
}