8000 [DependencyInjection] Unescape parameters for all types of injection · symfony/symfony@d7f3864 · GitHub
[go: up one dir, main page]

Skip to content

Commit d7f3864

Browse files
NicofumaTristan Darricau
authored andcommitted
[DependencyInjection] Unescape parameters for all types of injection
1 parent 613910b commit d7f3864

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/Symfony/Component/DependencyInjection/ContainerBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,7 @@ public function createService(Definition $definition, $id, $tryProxy = true)
895895
$this->callMethod($service, $call);
896896
}
897897

898-
$properties = $this->resolveServices($parameterBag->resolveValue($definition->getProperties()));
898+
$properties = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties())));
899899
foreach ($properties as $name => $value) {
900900
$service->$name = $value;
901901
}
@@ -1052,7 +1052,7 @@ private function callMethod($service, $call)
10521052
}
10531053
}
10541054

1055-
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1])));
1055+
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1]))));
10561056
}
10571057

10581058
/**

src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,9 +364,21 @@ public function testCreateServiceMethodCalls()
364364
{
365365
$builder = new ContainerBuilder();
366366
$builder->register('bar', 'stdClass');
367-
$builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%value%', new Reference('bar'))));
367+
$builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%value%', new Reference('bar'), '%%unescape_it%%')));
368368
$builder->setParameter('value', 'bar');
369-
$this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
369+
$this->assertEquals(array('bar', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
370+
}
371+
372+
/**
373+
* @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService
374+
*/
375+
public function testCreateServiceProperties()
376+
{
377+
$builder = new ContainerBuilder();
378+
$builder->register('bar', 'stdClass');
379+
$builder->register('foo1', 'FooClass')->setProperty('bar', array('%value%', new Reference('bar'), '%%unescape_it%%'));
380+
$builder->setParameter('value', 'bar');
381+
$this->assertEquals(array('bar', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the properties');
370382
}
371383

372384
/**

0 commit comments

Comments
 (0)
0