From db5bc1e1c064acd4408dd0a7dac9815f7def7272 Mon Sep 17 00:00:00 2001 From: podhor01 Date: Thu, 17 Mar 2016 15:08:50 +0100 Subject: [PATCH 1/5] don't overwrite service definition if already exists --- .../Compiler/RegisterControllersPass.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/DependencyInjection/Compiler/RegisterControllersPass.php b/src/DependencyInjection/Compiler/RegisterControllersPass.php index 93badf7..6892043 100644 --- a/src/DependencyInjection/Compiler/RegisterControllersPass.php +++ b/src/DependencyInjection/Compiler/RegisterControllersPass.php @@ -58,7 +58,17 @@ private function registerControllersToContainerBuilder(array $controllers, Conta { foreach ($controllers as $controller) { $id = $this->buildControllerIdFromClass($controller); - $definition = $this->buildControllerDefinitionFromClass($controller); + + if (!$containerBuilder->hasDefinition($id)) + { + $definition = $this->buildControllerDefinitionFromClass($controller); + } + else + { + $definition = $containerBuilder->getDefinition($id); + $definition->setAutowired(true); + } + $containerBuilder->setDefinition($id, $definition); $this->controllerClassMap->addController($id, $controller); From ed8acfe6dc41222e6a448adae4a92a6d46560bfd Mon Sep 17 00:00:00 2001 From: podhor01 Date: Thu, 17 Mar 2016 15:39:37 +0100 Subject: [PATCH 2/5] add tests --- .../Compiler/RegisterControllersPassTest.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php index 3436c3e..a82679f 100644 --- a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php +++ b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php @@ -49,4 +49,26 @@ public function testProcess() $this->assertSame(SomeController::class, $controllerDefinition->getClass()); $this->assertTrue($controllerDefinition->isAutowired()); } + + public function testServiceDefinitionExists() + { + $containerBuilder = new ContainerBuilder(); + $containerBuilder->prependExtensionConfig(SymplifyControllerAutowireBundle::ALIAS, [ + 'controller_dirs' => [ + __DIR__.'/RegisterControllersPassSource', + ], + ]); + + $controllerDefition = new Definition(SomeController::class); + $containerBuilder->setDefinition( + 'symplify.controllerautowire.tests.dependencyinjection.compiler.registercontrollerspasssource.somecontroller', + $controllerDefition + ); + $this->assertCount(1, $containerBuilder->getDefinitions()); + + $this->registerControllersPass->process($containerBuilder); + $this->assertCount(1, $containerBuilder->getDefinitions()); + + $this->assertTrue($controllerDefition->isAutowired()); + } } From 528c9bb7bd8fe85f585ea0f2d8bb1067388f2b04 Mon Sep 17 00:00:00 2001 From: podhor01 Date: Thu, 17 Mar 2016 16:09:38 +0100 Subject: [PATCH 3/5] fix symfony coding standards --- .../Compiler/RegisterControllersPass.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/DependencyInjection/Compiler/RegisterControllersPass.php b/src/DependencyInjection/Compiler/RegisterControllersPass.php index 6892043..724372f 100644 --- a/src/DependencyInjection/Compiler/RegisterControllersPass.php +++ b/src/DependencyInjection/Compiler/RegisterControllersPass.php @@ -59,17 +59,13 @@ private function registerControllersToContainerBuilder(array $controllers, Conta foreach ($controllers as $controller) { $id = $this->buildControllerIdFromClass($controller); - if (!$containerBuilder->hasDefinition($id)) - { + if (!$containerBuilder->hasDefinition($id)) { $definition = $this->buildControllerDefinitionFromClass($controller); - } - else - { + } else { $definition = $containerBuilder->getDefinition($id); $definition->setAutowired(true); } - $containerBuilder->setDefinition($id, $definition); $this->controllerClassMap->addController($id, $controller); } From 0005681ae0c7fa7387b0942f076e6c6f431958d7 Mon Sep 17 00:00:00 2001 From: podhor01 Date: Thu, 17 Mar 2016 16:18:06 +0100 Subject: [PATCH 4/5] split service name into two lines --- .../Compiler/RegisterControllersPassTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php index a82679f..dd4573d 100644 --- a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php +++ b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php @@ -61,7 +61,8 @@ public function testServiceDefinitionExists() $controllerDefition = new Definition(SomeController::class); $containerBuilder->setDefinition( - 'symplify.controllerautowire.tests.dependencyinjection.compiler.registercontrollerspasssource.somecontroller', + 'symplify.controllerautowire.tests.dependencyinjection.' + . 'compiler.registercontrollerspasssource.somecontroller', $controllerDefition ); $this->assertCount(1, $containerBuilder->getDefinitions()); From e32ac8cc2f5f6e63c83a5a452440954f66bbd252 Mon Sep 17 00:00:00 2001 From: podhor01 Date: Thu, 17 Mar 2016 16:24:29 +0100 Subject: [PATCH 5/5] delete space --- .../Compiler/RegisterControllersPassTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php index dd4573d..0dd9588 100644 --- a/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php +++ b/tests/DependencyInjection/Compiler/RegisterControllersPassTest.php @@ -62,7 +62,7 @@ public function testServiceDefinitionExists() $controllerDefition = new Definition(SomeController::class); $containerBuilder->setDefinition( 'symplify.controllerautowire.tests.dependencyinjection.' - . 'compiler.registercontrollerspasssource.somecontroller', + .'compiler.registercontrollerspasssource.somecontroller', $controllerDefition ); $this->assertCount(1, $containerBuilder->getDefinitions());