From 57661e40fec636938bcc51a3f429bfed0234718e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 28 Dec 2016 10:58:04 +0100 Subject: [PATCH] [DI] Fix method autowiring in ResolveDefinitionTemplatesPass --- .../Component/DependencyInjection/ChildDefinition.php | 6 +++--- .../Compiler/ResolveDefinitionTemplatesPass.php | 8 ++++---- .../DependencyInjection/Tests/ChildDefinitionTest.php | 8 ++++---- .../Compiler/ResolveDefinitionTemplatesPassTest.php | 11 ++++++----- .../Tests/DefinitionDecoratorTest.php | 8 ++++---- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ChildDefinition.php b/src/Symfony/Component/DependencyInjection/ChildDefinition.php index 53a1d188a0e90..5706d4bd3bf09 100644 --- a/src/Symfony/Component/DependencyInjection/ChildDefinition.php +++ b/src/Symfony/Component/DependencyInjection/ChildDefinition.php @@ -139,11 +139,11 @@ public function setDeprecated($boolean = true, $template = null) /** * {@inheritdoc} */ - public function setAutowired($autowired) + public function setAutowiredMethods(array $autowiredMethods) { - $this->changes['autowire'] = true; + $this->changes['autowired_methods'] = true; - return parent::setAutowired($autowired); + return parent::setAutowiredMethods($autowiredMethods); } /** diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php index 5603d6274b123..ba5978a734503 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php @@ -141,7 +141,7 @@ private function doResolveDefinition(ContainerBuilder $container, ChildDefinitio $def->setFile($parentDef->getFile()); $def->setPublic($parentDef->isPublic()); $def->setLazy($parentDef->isLazy()); - $def->setAutowired($parentDef->isAutowired()); + $def->setAutowiredMethods($parentDef->getAutowiredMethods()); // overwrite with values specified in the decorator $changes = $definition->getChanges(); @@ -166,8 +166,8 @@ private function doResolveDefinition(ContainerBuilder $container, ChildDefinitio if (isset($changes['deprecated'])) { $def->setDeprecated($definition->isDeprecated(), $definition->getDeprecationMessage('%service_id%')); } - if (isset($changes['autowire'])) { - $def->setAutowired($definition->isAutowired()); + if (isset($changes['autowired_methods'])) { + $def->setAutowiredMethods($definition->getAutowiredMethods()); } if (isset($changes['decorated_service'])) { $decoratedService = $definition->getDecoratedService(); @@ -199,7 +199,7 @@ private function doResolveDefinition(ContainerBuilder $container, ChildDefinitio } // append method calls - if (count($calls = $definition->getMethodCalls()) > 0) { + if ($calls = $definition->getMethodCalls()) { $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls)); } diff --git a/src/Symfony/Component/DependencyInjection/Tests/ChildDefinitionTest.php b/src/Symfony/Component/DependencyInjection/Tests/ChildDefinitionTest.php index 8f89e3b626da4..a1484b11cbf39 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ChildDefinitionTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ChildDefinitionTest.php @@ -69,14 +69,14 @@ public function testSetLazy() $this->assertSame(array('lazy' => true), $def->getChanges()); } - public function testSetAutowired() + public function testSetAutowiredMethods() { $def = new ChildDefinition('foo'); $this->assertFalse($def->isAutowired()); - $this->assertSame($def, $def->setAutowired(false)); - $this->assertFalse($def->isAutowired()); - $this->assertSame(array('autowire' => true), $def->getChanges()); + $this->assertSame($def, $def->setAutowiredMethods(array('foo', 'bar'))); + $this->assertEquals(array('foo', 'bar'), $def->getAutowiredMethods()); + $this->assertSame(array('autowired_methods' => true), $def->getChanges()); } public function testSetArgument() diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php index f1141f6e61802..1dc96e7396550 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php @@ -214,15 +214,16 @@ public function testSetAutowiredOnServiceHasParent() { $container = new ContainerBuilder(); - $container->register('parent', 'stdClass'); + $container->register('parent', 'stdClass') + ->setAutowiredMethods(array('foo', 'bar')); $container->setDefinition('child1', new ChildDefinition('parent')) - ->setAutowired(true) + ->setAutowiredMethods(array('baz')) ; $this->process($container); - $this->assertTrue($container->getDefinition('child1')->isAutowired()); + $this->assertEquals(array('baz'), $container->getDefinition('child1')->getAutowiredMethods()); } public function testSetAutowiredOnServiceIsParent() @@ -230,14 +231,14 @@ public function testSetAutowiredOnServiceIsParent() $container = new ContainerBuilder(); $container->register('parent', 'stdClass') - ->setAutowired(true) + ->setAutowiredMethods(array('__construct', 'set*')) ; $container->setDefinition('child1', new ChildDefinition('parent')); $this->process($container); - $this->assertTrue($container->getDefinition('child1')->isAutowired()); + $this->assertEquals(array('__construct', 'set*'), $container->getDefinition('child1')->getAutowiredMethods()); } public function testDeepDefinitionsResolving() diff --git a/src/Symfony/Component/DependencyInjection/Tests/DefinitionDecoratorTest.php b/src/Symfony/Component/DependencyInjection/Tests/DefinitionDecoratorTest.php index 0563bc71cb9ec..301c431ab662a 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/DefinitionDecoratorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/DefinitionDecoratorTest.php @@ -72,14 +72,14 @@ public function testSetLazy() $this->assertEquals(array('lazy' => true), $def->getChanges()); } - public function testSetAutowired() + public function testSetAutowiredMethods() { $def = new DefinitionDecorator('foo'); $this->assertFalse($def->isAutowired()); - $this->assertSame($def, $def->setAutowired(false)); - $this->assertFalse($def->isAutowired()); - $this->assertEquals(array('autowire' => true), $def->getChanges()); + $this->assertSame($def, $def->setAutowiredMethods(array('foo', 'bar'))); + $this->assertEquals(array('foo', 'bar'), $def->getAutowiredMethods()); + $this->assertEquals(array('autowired_methods' => true), $def->getChanges()); } public function testSetArgument()