diff --git a/.php_cs b/.php_cs index 6bb579e08..19bc0d2e7 100644 --- a/.php_cs +++ b/.php_cs @@ -45,5 +45,6 @@ return PhpCsFixer\Config::create() 'strict_comparison' => true, 'strict_param' => true, 'yoda_style' => false, + 'native_function_invocation' => false, ]) ->setFinder($finder); diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index 9b8799ebf..94676a2d7 100644 --- a/src/ContainerBuilder.php +++ b/src/ContainerBuilder.php @@ -306,24 +306,26 @@ public function wrapContainer(ContainerInterface $otherContainer) : self /** * Add definitions to the container. * - * @param string|array|DefinitionSource $definitions Can be an array of definitions, the - * name of a file containing definitions - * or a DefinitionSource object. + * @param string|array|DefinitionSource ...$definitions Can be an array of definitions, the + * name of a file containing definitions + * or a DefinitionSource object. * @return $this */ - public function addDefinitions($definitions) : self + public function addDefinitions(...$definitions) : self { $this->ensureNotLocked(); - if (!is_string($definitions) && !is_array($definitions) && !($definitions instanceof DefinitionSource)) { - throw new InvalidArgumentException(sprintf( - '%s parameter must be a string, an array or a DefinitionSource object, %s given', - 'ContainerBuilder::addDefinitions()', - is_object($definitions) ? get_class($definitions) : gettype($definitions) - )); - } + foreach ($definitions as $definition) { + if (!is_string($definition) && !is_array($definition) && !($definition instanceof DefinitionSource)) { + throw new InvalidArgumentException(sprintf( + '%s parameter must be a string, an array or a DefinitionSource object, %s given', + 'ContainerBuilder::addDefinitions()', + is_object($definition) ? get_class($definition) : gettype($definition) + )); + } - $this->definitionSources[] = $definitions; + $this->definitionSources[] = $definition; + } return $this; } diff --git a/tests/UnitTest/ContainerBuilderTest.php b/tests/UnitTest/ContainerBuilderTest.php index 53626aa6a..9874d4526 100644 --- a/tests/UnitTest/ContainerBuilderTest.php +++ b/tests/UnitTest/ContainerBuilderTest.php @@ -94,8 +94,7 @@ public function should_allow_to_add_custom_definition_sources() $builder = new ContainerBuilder(FakeContainer::class); // Custom definition sources should be chained correctly - $builder->addDefinitions(new DefinitionArray(['foo' => 'bar'])); - $builder->addDefinitions(new DefinitionArray(['foofoo' => 'barbar'])); + $builder->addDefinitions(new DefinitionArray(['foo' => 'bar']), new DefinitionArray(['foofoo' => 'barbar'])); /** @var FakeContainer $container */ $container = $builder->build(); @@ -117,8 +116,7 @@ public function should_chain_definition_sources_in_reverse_order() { $builder = new ContainerBuilder(FakeContainer::class); - $builder->addDefinitions(new DefinitionArray(['foo' => 'bar'])); - $builder->addDefinitions(new DefinitionArray(['foo' => 'bim'])); + $builder->addDefinitions(new DefinitionArray(['foo' => 'bar']), new DefinitionArray(['foo' => 'bim'])); /** @var FakeContainer $container */ $container = $builder->build(); @@ -136,8 +134,7 @@ public function should_allow_to_add_definitions_in_an_array() $builder = new ContainerBuilder(FakeContainer::class); // Custom definition sources should be chained correctly - $builder->addDefinitions(['foo' => 'bar']); - $builder->addDefinitions(['foofoo' => 'barbar']); + $builder->addDefinitions(['foo' => 'bar'], ['foofoo' => 'barbar']); /** @var FakeContainer $container */ $container = $builder->build();