diff --git a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php index 2db8d5e972..a900e0b23f 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php @@ -215,7 +215,8 @@ class YamlFileLoader extends FileLoader private function parseDefinition($id, $service, $file, array $defaults) { if (is_string($service) && 0 === strpos($service, '@')) { - $this->container->setAlias($id, substr($service, 1)); + $public = isset($defaults['public']) ? $defaults['public'] : true; + $this->container->setAlias($id, new Alias(substr($service, 1), $public)); return; } @@ -231,7 +232,7 @@ class YamlFileLoader extends FileLoader static::checkDefinition($id, $service, $file); if (isset($service['alias'])) { - $public = array_key_exists('public', $service) ? (bool) $service['public'] : !empty($defaults['public']); + $public = array_key_exists('public', $service) ? (bool) $service['public'] : (isset($defaults['public']) ? $defaults['public'] : true); $this->container->setAlias($id, new Alias($service['alias'], $public)); foreach ($service as $key => $value) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services28.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services28.yml index 85f6d145cd..6543a101ed 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services28.yml +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services28.yml @@ -34,3 +34,8 @@ services: inherit_tags: true tags: - name: baz + + with_defaults_aliased: + alias: with_defaults + + with_defaults_aliased_short: '@with_defaults' diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml index dbd7b88f68..5f22bc1cae 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml @@ -18,6 +18,8 @@ services: calls: - [ setBar, [ foo, '@foo', [true, false] ] ] alias_for_foo: '@foo' + another_third_alias_for_foo: + alias: foo another_alias_for_foo: alias: foo public: false diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php index 3d42ac3442..ab7a42e8af 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php @@ -151,6 +151,9 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase $this->assertTrue(isset($aliases['another_alias_for_foo'])); $this->assertEquals('foo', (string) $aliases['another_alias_for_foo']); $this->assertFalse($aliases['another_alias_for_foo']->isPublic()); + $this->assertTrue(isset($aliases['another_third_alias_for_foo'])); + $this->assertEquals('foo', (string) $aliases['another_third_alias_for_foo']); + $this->assertTrue($aliases['another_third_alias_for_foo']->isPublic()); $this->assertEquals(array('decorated', null, 0), $services['decorator_service']->getDecoratedService()); $this->assertEquals(array('decorated', 'decorated.pif-pouf', 0), $services['decorator_service_with_name']->getDecoratedService()); @@ -362,6 +365,9 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase $this->assertSame(array('foo' => array(array())), $container->getDefinition('with_defaults')->getTags()); $this->assertTrue($container->getDefinition('with_defaults')->isAutowired()); + $this->assertFalse($container->getAlias('with_defaults_aliased')->isPublic()); + $this->assertFalse($container->getAlias('with_defaults_aliased_short')->isPublic()); + $this->assertArrayNotHasKey('public', $container->getDefinition('no_defaults_child')->getChanges()); $this->assertArrayNotHasKey('autowire', $container->getDefinition('no_defaults_child')->getChanges());