putenv('DUMMY_ENV_VAR');
}
+ public function testCompileWithArrayResolveEnv()
+ {
+ putenv('ARRAY={"foo":"bar"}');
+
+ $container = new ContainerBuilder();
+ $container->setParameter('foo', '%env(json:ARRAY)%');
+ $container->compile(true);
+
+ $this->assertSame(array('foo' => 'bar'), $container->getParameter('foo'));
+
+ putenv('ARRAY');
+ }
+
+ public function testCompileWithArrayAndAnotherResolveEnv()
+ {
+ putenv('DUMMY_ENV_VAR=abc');
+ putenv('ARRAY={"foo":"bar"}');
+
+ $container = new ContainerBuilder();
+ $container->setParameter('foo', '%env(json:ARRAY)%');
+ $container->setParameter('bar', '%env(DUMMY_ENV_VAR)%');
+ $container->compile(true);
+
+ $this->assertSame(array('foo' => 'bar'), $container->getParameter('foo'));
+ $this->assertSame('abc', $container->getParameter('bar'));
+
+ putenv('DUMMY_ENV_VAR');
+ putenv('ARRAY');
+ }
+
/**
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
- * @expectedExceptionMessage A string value must be composed of strings and/or numbers, but found parameter "env(ARRAY)" of type array inside string value "ABC %env(ARRAY)%".
+ * @expectedExceptionMessage A string value must be composed of strings and/or numbers, but found parameter "env(json:ARRAY)" of type array inside string value "ABC %env(json:ARRAY)%".
*/
- public function testCompileWithArrayResolveEnv()
+ public function testCompileWithArrayInStringResolveEnv()
{
- $bag = new TestingEnvPlaceholderParameterBag();
- $container = new ContainerBuilder($bag);
- $container->setParameter('foo', '%env(ARRAY)%');
- $container->setParameter('bar', 'ABC %env(ARRAY)%');
+ putenv('ARRAY={"foo":"bar"}');
+
+ $container = new ContainerBuilder();
+ $container->setParameter('foo', 'ABC %env(json:ARRAY)%');
$container->compile(true);
+
+ putenv('ARRAY');
}
/**
{
}
}
-
-class TestingEnvPlaceholderParameterBag extends EnvPlaceholderParameterBag
-{
- public function get($name)
- {
- return 'env(array)' === strtolower($name) ? array(123) : parent::get($name);
- }
-}