[DI] Fix keys resolution in ResolveParameterPlaceHoldersPass
This commit is contained in:
parent
d024c82b48
commit
9251a2143d
@ -65,10 +65,14 @@ class ResolveParameterPlaceHoldersPass extends AbstractRecursivePass
|
|||||||
if (isset($changes['file'])) {
|
if (isset($changes['file'])) {
|
||||||
$value->setFile($this->bag->resolveValue($value->getFile()));
|
$value->setFile($this->bag->resolveValue($value->getFile()));
|
||||||
}
|
}
|
||||||
$value->setProperties($this->bag->resolveValue($value->getProperties()));
|
|
||||||
$value->setMethodCalls($this->bag->resolveValue($value->getMethodCalls()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return parent::processValue($value, $isRoot);
|
$value = parent::processValue($value, $isRoot);
|
||||||
|
|
||||||
|
if ($value && is_array($value)) {
|
||||||
|
$value = array_combine($this->bag->resolveValue(array_keys($value)), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,12 +41,12 @@ class ResolveParameterPlaceHoldersPassTest extends TestCase
|
|||||||
|
|
||||||
public function testArgumentParametersShouldBeResolved()
|
public function testArgumentParametersShouldBeResolved()
|
||||||
{
|
{
|
||||||
$this->assertSame(array('bar', 'baz'), $this->fooDefinition->getArguments());
|
$this->assertSame(array('bar', array('bar' => 'baz')), $this->fooDefinition->getArguments());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMethodCallParametersShouldBeResolved()
|
public function testMethodCallParametersShouldBeResolved()
|
||||||
{
|
{
|
||||||
$this->assertSame(array(array('foobar', array('bar', 'baz'))), $this->fooDefinition->getMethodCalls());
|
$this->assertSame(array(array('foobar', array('bar', array('bar' => 'baz')))), $this->fooDefinition->getMethodCalls());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPropertyParametersShouldBeResolved()
|
public function testPropertyParametersShouldBeResolved()
|
||||||
@ -71,7 +71,7 @@ class ResolveParameterPlaceHoldersPassTest extends TestCase
|
|||||||
$containerBuilder->setParameter('foo.class', 'Foo');
|
$containerBuilder->setParameter('foo.class', 'Foo');
|
||||||
$containerBuilder->setParameter('foo.factory.class', 'FooFactory');
|
$containerBuilder->setParameter('foo.factory.class', 'FooFactory');
|
||||||
$containerBuilder->setParameter('foo.arg1', 'bar');
|
$containerBuilder->setParameter('foo.arg1', 'bar');
|
||||||
$containerBuilder->setParameter('foo.arg2', 'baz');
|
$containerBuilder->setParameter('foo.arg2', array('%foo.arg1%' => 'baz'));
|
||||||
$containerBuilder->setParameter('foo.method', 'foobar');
|
$containerBuilder->setParameter('foo.method', 'foobar');
|
||||||
$containerBuilder->setParameter('foo.property.name', 'bar');
|
$containerBuilder->setParameter('foo.property.name', 'bar');
|
||||||
$containerBuilder->setParameter('foo.property.value', 'baz');
|
$containerBuilder->setParameter('foo.property.value', 'baz');
|
||||||
@ -80,7 +80,7 @@ class ResolveParameterPlaceHoldersPassTest extends TestCase
|
|||||||
|
|
||||||
$fooDefinition = $containerBuilder->register('foo', '%foo.class%');
|
$fooDefinition = $containerBuilder->register('foo', '%foo.class%');
|
||||||
$fooDefinition->setFactory(array('%foo.factory.class%', 'getFoo'));
|
$fooDefinition->setFactory(array('%foo.factory.class%', 'getFoo'));
|
||||||
$fooDefinition->setArguments(array('%foo.arg1%', '%foo.arg2%'));
|
$fooDefinition->setArguments(array('%foo.arg1%', array('%foo.arg1%' => 'baz')));
|
||||||
$fooDefinition->addMethodCall('%foo.method%', array('%foo.arg1%', '%foo.arg2%'));
|
$fooDefinition->addMethodCall('%foo.method%', array('%foo.arg1%', '%foo.arg2%'));
|
||||||
$fooDefinition->setProperty('%foo.property.name%', '%foo.property.value%');
|
$fooDefinition->setProperty('%foo.property.name%', '%foo.property.value%');
|
||||||
$fooDefinition->setFile('%foo.file%');
|
$fooDefinition->setFile('%foo.file%');
|
||||||
|
Reference in New Issue
Block a user