Skip to content

Commit 331a046

Browse files
NicofumaTristan Darricau
authored andcommitted
[DependencyInjection] Unescape parameters for all types of injection
1 parent 1728dcc commit 331a046

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
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
}
@@ -1054,7 +1054,7 @@ private function callMethod($service, $call)
10541054
}
10551055
}
10561056

1057-
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1])));
1057+
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1]))));
10581058
}
10591059

10601060
/**

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,24 @@ public function testCreateServiceMethodCalls()
305305
$this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
306306
}
307307

308+
public function testCreateServiceMethodCallsWithEscapedParam()
309+
{
310+
$builder = new ContainerBuilder();
311+
$builder->register('bar', 'stdClass');
312+
$builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%%unescape_it%%')));
313+
$builder->setParameter('value', 'bar');
314+
$this->assertEquals(array('%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
315+
}
316+
317+
public function testCreateServiceProperties()
318+
{
319+
$builder = new ContainerBuilder();
320+
$builder->register('bar', 'stdClass');
321+
$builder->register('foo1', 'FooClass')->setProperty('bar', array('%value%', new Reference('bar'), '%%unescape_it%%'));
322+
$builder->setParameter('value', 'bar');
323+
$this->assertEquals(array('bar', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the properties');
324+
}
325+
308326
public function testCreateServiceConfigurator()
309327
{
310328
$builder = new ContainerBuilder();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy