Skip to content

Commit d0e4499

Browse files
jschaedlfabpot
authored andcommitted
[DI] Improve exception message on missing $ of named argument
1 parent e9aaaaf commit d0e4499

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/Symfony/Component/DependencyInjection/Compiler/ResolveNamedArgumentsPass.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ protected function processValue($value, $isRoot = false)
5353
$parameters = $r->getParameters();
5454
}
5555

56+
if (isset($key[0]) && '$' !== $key[0] && !class_exists($key)) {
57+
throw new InvalidArgumentException(sprintf('Invalid service "%s": did you forget to add the "$" prefix to argument "%s"?', $this->currentId, $key));
58+
}
59+
5660
if (isset($key[0]) && '$' === $key[0]) {
5761
foreach ($parameters as $j => $p) {
5862
if ($key === '$'.$p->name) {

src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveNamedArgumentsPassTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,21 @@ public function testTypedArgument()
149149
$this->assertEquals([new Reference('foo'), '123'], $definition->getArguments());
150150
}
151151

152+
/**
153+
* @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
154+
* @expectedExceptionMessage Invalid service "Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsDummy": did you forget to add the "$" prefix to argument "apiKey"?
155+
*/
156+
public function testTypedArgumentWithMissingDollar()
157+
{
158+
$container = new ContainerBuilder();
159+
160+
$definition = $container->register(NamedArgumentsDummy::class, NamedArgumentsDummy::class);
161+
$definition->setArgument('apiKey', '123');
162+
163+
$pass = new ResolveNamedArgumentsPass();
164+
$pass->process($container);
165+
}
166+
152167
public function testResolvesMultipleArgumentsOfTheSameType()
153168
{
154169
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)