Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4d9d92a

Browse files
[DI] Fix keys resolution in ResolveParameterPlaceHoldersPass
1 parent d024c82 commit 4d9d92a

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ protected function processValue($value, $isRoot = false)
6565
if (isset($changes['file'])) {
6666
$value->setFile($this->bag->resolveValue($value->getFile()));
6767
}
68-
$value->setProperties($this->bag->resolveValue($value->getProperties()));
69-
$value->setMethodCalls($this->bag->resolveValue($value->getMethodCalls()));
68+
}
69+
if (is_array($value = parent::processValue($value, $isRoot)) && $value) {
70+
$value = array_combine($this->bag->resolveValue(array_keys($value)), $value);
7071
}
7172

72-
return parent::processValue($value, $isRoot);
73+
return $value;
7374
}
7475
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ public function testFactoryParametersShouldBeResolved()
4141

4242
public function testArgumentParametersShouldBeResolved()
4343
{
44-
$this->assertSame(array('bar', 'baz'), $this->fooDefinition->getArguments());
44+
$this->assertSame(array('bar', array('bar' => 'baz')), $this->fooDefinition->getArguments());
4545
}
4646

4747
public function testMethodCallParametersShouldBeResolved()
4848
{
49-
$this->assertSame(array(array('foobar', array('bar', 'baz'))), $this->fooDefinition->getMethodCalls());
49+
$this->assertSame(array(array('foobar', array('bar', array('bar' => 'baz')))), $this->fooDefinition->getMethodCalls());
5050
}
5151

5252
public function testPropertyParametersShouldBeResolved()
@@ -71,7 +71,7 @@ private function createContainerBuilder()
7171
$containerBuilder->setParameter('foo.class', 'Foo');
7272
$containerBuilder->setParameter('foo.factory.class', 'FooFactory');
7373
$containerBuilder->setParameter('foo.arg1', 'bar');
74-
$containerBuilder->setParameter('foo.arg2', 'baz');
74+
$containerBuilder->setParameter('foo.arg2', array('%foo.arg1%' => 'baz'));
7575
$containerBuilder->setParameter('foo.method', 'foobar');
7676
$containerBuilder->setParameter('foo.property.name', 'bar');
7777
$containerBuilder->setParameter('foo.property.value', 'baz');
@@ -80,7 +80,7 @@ private function createContainerBuilder()
8080

8181
$fooDefinition = $containerBuilder->register('foo', '%foo.class%');
8282
$fooDefinition->setFactory(array('%foo.factory.class%', 'getFoo'));
83-
$fooDefinition->setArguments(array('%foo.arg1%', '%foo.arg2%'));
83+
$fooDefinition->setArguments(array('%foo.arg1%', array('%foo.arg1%' => 'baz')));
8484
$fooDefinition->addMethodCall('%foo.method%', array('%foo.arg1%', '%foo.arg2%'));
8585
$fooDefinition->setProperty('%foo.property.name%', '%foo.property.value%');
8686
$fooDefinition->setFile('%foo.file%');

0 commit comments

Comments
 (0)