diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php b/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php index d1b1fd292cf06..097ea379e0c91 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php @@ -24,6 +24,9 @@ */ class AutowirePass implements CompilerPassInterface { + /** + * @var ContainerBuilder + */ private $container; private $reflectionClasses = array(); private $definedTypes = array(); @@ -40,6 +43,7 @@ public function process(ContainerBuilder $container) try { $this->container = $container; + foreach ($container->getDefinitions() as $id => $definition) { if ($definition->isAutowired()) { $this->completeDefinition($id, $definition); @@ -107,6 +111,11 @@ private function completeDefinition($id, Definition $definition) continue; } + if ($this->container->hasParameter($parameter->name)) { + $arguments[$index] = $this->container->getParameter($parameter->name); + continue; + } + try { if (!$typeHint = $parameter->getClass()) { // no default value? Then fail diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowirePassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowirePassTest.php index a8b1be355017a..ba64ef3a04a8c 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowirePassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/AutowirePassTest.php @@ -476,6 +476,20 @@ public function testIgnoreServiceWithClassNotExisting() $this->assertTrue($container->hasDefinition('bar')); } + + public function testParameterInjection() + { + $container = new ContainerBuilder(); + $container->setParameter('myParameter', 'SymfonyCon Berlin Hackday!'); + + $parameterInjectionDefinition = $container->register(ParameterInjection::class, ParameterInjection::class); + $parameterInjectionDefinition->setAutowired(true); + + $pass = new AutowirePass(); + $pass->process($container); + + $this->assertEquals('SymfonyCon Berlin Hackday!', $parameterInjectionDefinition->getArgument(1)); + } } class Foo @@ -654,3 +668,10 @@ public function __construct($foo, Bar $bar, $baz) { } } + +class ParameterInjection +{ + public function __construct(Foo $foo, $myParameter) + { + } +}