public function ContainerBuilder::merge in Service Container 7.2
Same name and namespace in other branches
- 7 modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/ContainerBuilder.php \Symfony\Component\DependencyInjection\ContainerBuilder::merge()
Merges a ContainerBuilder with the current ContainerBuilder configuration.
Service definitions overrides the current defined ones.
But for parameters, they are overridden by the current ones. It allows the parameters passed to the container constructor to have precedence over the loaded ones.
$container = new ContainerBuilder(array('foo' => 'bar')); $loader = new LoaderXXX($container); $loader->load('resource_name'); $container->register('foo', new stdClass());
In the above example, even if the loaded resource defines a foo parameter, the value will still be 'bar' as defined in the ContainerBuilder constructor.
@api
Parameters
ContainerBuilder $container The ContainerBuilder instance to merge.:
Throws
BadMethodCallException When this ContainerBuilder is frozen
File
- modules/
providers/ service_container_symfony/ lib/ Symfony/ Component/ DependencyInjection/ ContainerBuilder.php, line 530
Class
- ContainerBuilder
- ContainerBuilder is a DI container that provides an API to easily describe services.
Namespace
Symfony\Component\DependencyInjectionCode
public function merge(ContainerBuilder $container) {
if ($this
->isFrozen()) {
throw new BadMethodCallException('Cannot merge on a frozen container.');
}
$this
->addDefinitions($container
->getDefinitions());
$this
->addAliases($container
->getAliases());
$this
->getParameterBag()
->add($container
->getParameterBag()
->all());
if ($this->trackResources) {
foreach ($container
->getResources() as $resource) {
$this
->addResource($resource);
}
}
foreach ($this->extensions as $name => $extension) {
if (!isset($this->extensionConfigs[$name])) {
$this->extensionConfigs[$name] = array();
}
$this->extensionConfigs[$name] = array_merge($this->extensionConfigs[$name], $container
->getExtensionConfig($name));
}
}