* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ /** * Merges extension configs into the container builder * * @author Fabien Potencier */ class MergeExtensionConfigurationPass implements CompilerPassInterface { /** * {@inheritDoc} */ public function process(ContainerBuilder $container) { $parameters = $container->getParameterBag()->all(); $definitions = $container->getDefinitions(); $aliases = $container->getAliases(); foreach ($container->getExtensionConfigs() as $name => $configs) { list($namespace, $tag) = explode(':', $name); $extension = $container->getExtension($namespace); $tmpContainer = new ContainerBuilder($container->getParameterBag()); $tmpContainer->addObjectResource($extension); foreach ($configs as $config) { $extension->load($tag, $config, $tmpContainer); } $container->merge($tmpContainer); } $container->addDefinitions($definitions); $container->addAliases($aliases); $container->getParameterBag()->add($parameters); } }