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) + { + } +}
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: