@covers Symfony\Component\DependencyInjection\ContainerBuilder::merge
public function testMerge() {
if (!class_exists('Symfony\\Component\\Config\\Resource\\FileResource')) {
$this
->markTestSkipped('The "Config" component is not available');
}
$container = new ContainerBuilder(new ParameterBag(array(
'bar' => 'foo',
)));
$config = new ContainerBuilder(new ParameterBag(array(
'foo' => 'bar',
)));
$container
->merge($config);
$this
->assertEquals(array(
'bar' => 'foo',
'foo' => 'bar',
), $container
->getParameterBag()
->all(), '->merge() merges current parameters with the loaded ones');
$container = new ContainerBuilder(new ParameterBag(array(
'bar' => 'foo',
)));
$config = new ContainerBuilder(new ParameterBag(array(
'foo' => '%bar%',
)));
$container
->merge($config);
////// FIXME
$container
->compile();
$this
->assertEquals(array(
'bar' => 'foo',
'foo' => 'foo',
), $container
->getParameterBag()
->all(), '->merge() evaluates the values of the parameters towards already defined ones');
$container = new ContainerBuilder(new ParameterBag(array(
'bar' => 'foo',
)));
$config = new ContainerBuilder(new ParameterBag(array(
'foo' => '%bar%',
'baz' => '%foo%',
)));
$container
->merge($config);
////// FIXME
$container
->compile();
$this
->assertEquals(array(
'bar' => 'foo',
'foo' => 'foo',
'baz' => 'foo',
), $container
->getParameterBag()
->all(), '->merge() evaluates the values of the parameters towards already defined ones');
$container = new ContainerBuilder();
$container
->register('foo', 'FooClass');
$container
->register('bar', 'BarClass');
$config = new ContainerBuilder();
$config
->setDefinition('baz', new Definition('BazClass'));
$config
->setAlias('alias_for_foo', 'foo');
$container
->merge($config);
$this
->assertEquals(array(
'foo',
'bar',
'baz',
), array_keys($container
->getDefinitions()), '->merge() merges definitions already defined ones');
$aliases = $container
->getAliases();
$this
->assertTrue(isset($aliases['alias_for_foo']));
$this
->assertEquals('foo', (string) $aliases['alias_for_foo']);
$container = new ContainerBuilder();
$container
->register('foo', 'FooClass');
$config
->setDefinition('foo', new Definition('BazClass'));
$container
->merge($config);
$this
->assertEquals('BazClass', $container
->getDefinition('foo')
->getClass(), '->merge() overrides already defined services');
}