Skip to content

Commit 3e20ae9

Browse files
committed
Merge branch '3.3' into 3.4
* 3.3: [HttpFoundation] Use the correct syntax for session gc based on Pdo driver Removed assertDateTimeEquals() methods. Revert "bug #24987 [Console] Fix global console flag when used in chain (Simperfit)" Revert "bug #25487 [Console] Fix a bug when passing a letter that could be an alias (Simperfit)" Disable CSP header on exception pages only in debug Fixed submitting disabled buttons Fixed Button::setParent() when already submitted Improve assertions Restore RoleInterface import Improve assertions SCA: get rid of repetitive calls allow null values for root nodes in YAML configs revert useless tests fixtures changes [VarDumper] Fix docblock Improve phpdoc to make it more explicit
2 parents df4eb15 + 54243ab commit 3e20ae9

File tree

6 files changed

+31
-8
lines changed

6 files changed

+31
-8
lines changed

ContainerBuilder.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,16 @@ public function fileExists($path, $trackContents = true)
422422
* @throws BadMethodCallException When this ContainerBuilder is compiled
423423
* @throws \LogicException if the extension is not registered
424424
*/
425-
public function loadFromExtension($extension, array $values = array())
425+
public function loadFromExtension($extension, array $values = null)
426426
{
427427
if ($this->isCompiled()) {
428428
throw new BadMethodCallException('Cannot load from an extension on a compiled container.');
429429
}
430430

431+
if (func_num_args() < 2) {
432+
$values = array();
433+
}
434+
431435
$namespace = $this->getExtension($extension)->getAlias();
432436

433437
$this->extensionConfigs[$namespace][] = $values;

Loader/YamlFileLoader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@ private function loadFromExtensions(array $content)
821821
continue;
822822
}
823823

824-
if (!is_array($values)) {
824+
if (!is_array($values) && null !== $values) {
825825
$values = array();
826826
}
827827

Tests/Compiler/ResolveDefinitionTemplatesPassTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -262,23 +262,23 @@ public function testDeepDefinitionsResolving()
262262
$this->process($container);
263263

264264
$configurator = $container->getDefinition('sibling')->getConfigurator();
265-
$this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($configurator));
265+
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $configurator);
266266
$this->assertSame('parentClass', $configurator->getClass());
267267

268268
$factory = $container->getDefinition('sibling')->getFactory();
269-
$this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($factory[0]));
269+
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $factory[0]);
270270
$this->assertSame('parentClass', $factory[0]->getClass());
271271

272272
$argument = $container->getDefinition('sibling')->getArgument(0);
273-
$this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($argument));
273+
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $argument);
274274
$this->assertSame('parentClass', $argument->getClass());
275275

276276
$properties = $container->getDefinition('sibling')->getProperties();
277-
$this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($properties['prop']));
277+
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $properties['prop']);
278278
$this->assertSame('parentClass', $properties['prop']->getClass());
279279

280280
$methodCalls = $container->getDefinition('sibling')->getMethodCalls();
281-
$this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($methodCalls[0][1][0]));
281+
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $methodCalls[0][1][0]);
282282
$this->assertSame('parentClass', $methodCalls[0][1][0]->getClass());
283283
}
284284

Tests/Fixtures/includes/ProjectExtension.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ class ProjectExtension implements ExtensionInterface
88
{
99
public function load(array $configs, ContainerBuilder $configuration)
1010
{
11-
$config = call_user_func_array('array_merge', $configs);
11+
$configuration->setParameter('project.configs', $configs);
12+
$configs = array_filter($configs);
13+
14+
if ($configs) {
15+
$config = call_user_func_array('array_merge', $configs);
16+
} else {
17+
$config = array();
18+
}
1219

1320
$configuration->setDefinition('project.service.bar', new Definition('FooClass'));
1421
$configuration->setParameter('project.parameter.bar', isset($config['foo']) ? $config['foo'] : 'foobar');

Tests/Fixtures/yaml/null_config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
project: ~

Tests/Loader/YamlFileLoaderTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,17 @@ public function testExtensions()
221221
}
222222
}
223223

224+
public function testExtensionWithNullConfig()
225+
{
226+
$container = new ContainerBuilder();
227+
$container->registerExtension(new \ProjectExtension());
228+
$loader = new YamlFileLoader($container, new FileLocator(self::$fixturesPath.'/yaml'));
229+
$loader->load('null_config.yml');
230+
$container->compile();
231+
232+
$this->assertSame(array(null), $container->getParameter('project.configs'));
233+
}
234+
224235
public function testSupports()
225236
{
226237
$loader = new YamlFileLoader(new ContainerBuilder(), new FileLocator());

0 commit comments

Comments
 (0)