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)
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