Merge branch '2.7' into 2.8

* 2.7:
  Sent out a status text for unknown HTTP headers.
  [DependencyInjection] Unescape parameters for all types of injection
This commit is contained in:
Nicolas Grekas 2015-11-20 18:41:52 +01:00
commit fe6e9e4543
4 changed files with 22 additions and 4 deletions

View File

@ -936,7 +936,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
$this->callMethod($service, $call); $this->callMethod($service, $call);
} }
$properties = $this->resolveServices($parameterBag->resolveValue($definition->getProperties())); $properties = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties())));
foreach ($properties as $name => $value) { foreach ($properties as $name => $value) {
$service->$name = $value; $service->$name = $value;
} }
@ -1134,7 +1134,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
} }
} }
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1]))); call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1]))));
} }
/** /**

View File

@ -355,6 +355,24 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments'); $this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
} }
public function testCreateServiceMethodCallsWithEscapedParam()
{
$builder = new ContainerBuilder();
$builder->register('bar', 'stdClass');
$builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%%unescape_it%%')));
$builder->setParameter('value', 'bar');
$this->assertEquals(array('%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
}
public function testCreateServiceProperties()
{
$builder = new ContainerBuilder();
$builder->register('bar', 'stdClass');
$builder->register('foo1', 'FooClass')->setProperty('bar', array('%value%', new Reference('bar'), '%%unescape_it%%'));
$builder->setParameter('value', 'bar');
$this->assertEquals(array('bar', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the properties');
}
public function testCreateServiceConfigurator() public function testCreateServiceConfigurator()
{ {
$builder = new ContainerBuilder(); $builder = new ContainerBuilder();

View File

@ -455,7 +455,7 @@ class Response
} }
if (null === $text) { if (null === $text) {
$this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : ''; $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : 'unknown status';
return $this; return $this;
} }

View File

@ -695,7 +695,7 @@ class ResponseTest extends ResponseTestCase
array('200', null, 'OK'), array('200', null, 'OK'),
array('200', false, ''), array('200', false, ''),
array('200', 'foo', 'foo'), array('200', 'foo', 'foo'),
array('199', null, ''), array('199', null, 'unknown status'),
array('199', false, ''), array('199', false, ''),
array('199', 'foo', 'foo'), array('199', 'foo', 'foo'),
); );