From 5a995bd97efc231ead0b6cc94e040d49c535ff94 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Sat, 27 Feb 2016 01:01:27 +0100 Subject: [PATCH 1/2] Fix bug when using an private aliased factory service --- .../Compiler/ReplaceAliasByActualDefinitionPass.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php index fef070bcff07e..e1c6f2ec63b43 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php @@ -131,6 +131,6 @@ private function updateFactoryServiceReference($factoryService, $currentId, $new return; } - return $currentId === $factoryService ? $newId : $currentId; + return $currentId === $factoryService ? $newId : $factoryService; } } From 70c32c4af686a5c6cde6c084430d6d1bf68e9e9d Mon Sep 17 00:00:00 2001 From: WouterJ Date: Sat, 27 Feb 2016 15:47:20 +0100 Subject: [PATCH 2/2] Add failing test case --- ...ReplaceAliasByActualDefinitionPassTest.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php index ac1609f5d7d58..1381369ce59bc 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php @@ -15,6 +15,8 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; +require_once __DIR__.'/../Fixtures/includes/foo.php'; + class ReplaceAliasByActualDefinitionPassTest extends \PHPUnit_Framework_TestCase { public function testProcess() @@ -44,6 +46,26 @@ public function testProcess() $this->assertSame('b_alias', $aDefinition->getFactoryService()); } + /** + * @group legacy + */ + public function testPrivateAliasesInFactory() + { + $container = new ContainerBuilder(); + + $container->register('a', 'FooClass'); + $container->register('b', 'FooClass') + ->setFactoryService('a') + ->setFactoryMethod('getInstance'); + + $container->register('c', 'stdClass')->setPublic(false); + $container->setAlias('c_alias', 'c'); + + $this->process($container); + + $this->assertInstanceOf('FooClass', $container->get('b')); + } + /** * @expectedException \InvalidArgumentException */