From 6ef4ce8329284ad862df1b3c78d4449b03629fa2 Mon Sep 17 00:00:00 2001 From: Wouter J Date: Sat, 26 Nov 2016 17:34:50 +0100 Subject: [PATCH] Added a shortcut method for autowired definitions --- .../DependencyInjection/ContainerBuilder.php | 16 ++++++++++++++++ .../Tests/ContainerBuilderTest.php | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 58a38048f7530..fd64c07ad50c6 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -710,6 +710,22 @@ public function register($id, $class = null) return $this->setDefinition($id, new Definition($class)); } + /** + * Registers an autowired service definition. + * + * This method implements a shortcut for using setDefinition() with + * an autowired definition. + * + * @param string $id The service identifier + * @param null|string $class The service class + * + * @return Definition The created definition + */ + public function autowire($id, $class = null) + { + return $this->setDefinition($id, (new Definition($class))->setAutowired(true)); + } + /** * Adds the service definitions. * diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 155da75fb7958..2a7aed0a204d2 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -82,6 +82,15 @@ public function testRegister() $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $builder->getDefinition('foo'), '->register() returns the newly created Definition instance'); } + public function testAutowire() + { + $builder = new ContainerBuilder(); + $builder->autowire('foo', 'Bar\FooClass'); + + $this->assertTrue($builder->hasDefinition('foo'), '->autowire() registers a new service definition'); + $this->assertTrue($builder->getDefinition('foo')->isAutowired(), '->autowire() creates autowired definitions'); + } + public function testHas() { $builder = new ContainerBuilder();