From 687c5e83b220bf4cfdcee93dac56bb63078c6d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Mon, 17 Sep 2018 14:39:27 +0200 Subject: [PATCH 1/5] support variadic parameter on addDefinitions --- src/ContainerBuilder.php | 22 ++++++++++++---------- tests/UnitTest/ContainerBuilderTest.php | 9 +++------ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index 9b8799ebf..6879d9f35 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 + * @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(); From a9892481aec265b83591a444f1a33ceaf6b44cfb Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Mon, 17 Sep 2018 06:15:01 -0700 Subject: [PATCH 2/5] Update php-cs-fixer rules after the latest version --- .php_cs | 1 + 1 file changed, 1 insertion(+) 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); From 1be86047b71a1ed0b4b7b7cc812bd8bd3873ff6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Mon, 17 Sep 2018 14:39:27 +0200 Subject: [PATCH 3/5] support variadic parameter on addDefinitions --- src/ContainerBuilder.php | 22 ++++++++++++---------- tests/UnitTest/ContainerBuilderTest.php | 9 +++------ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index 9b8799ebf..6879d9f35 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 + * @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(); From fef27140f640ca23143f58d2e865431a66a7f875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Mon, 17 Sep 2018 16:33:27 +0200 Subject: [PATCH 4/5] revert dockblock --- src/ContainerBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index 6879d9f35..f285c1a68 100644 --- a/src/ContainerBuilder.php +++ b/src/ContainerBuilder.php @@ -306,7 +306,7 @@ public function wrapContainer(ContainerInterface $otherContainer) : self /** * Add definitions to the container. * - * @param string[]|array[]|DefinitionSource[] $definitions Can be an array of definitions, the + * @param string|array|DefinitionSource $definitions Can be an array of definitions, the * name of a file containing definitions * or a DefinitionSource object. * @return $this From c898d59a004e329c1a8e3ca81f1cf31fd973116a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Mon, 17 Sep 2018 16:42:13 +0200 Subject: [PATCH 5/5] dockblock variadic syntax tamed --- src/ContainerBuilder.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index f285c1a68..94676a2d7 100644 --- a/src/ContainerBuilder.php +++ b/src/ContainerBuilder.php @@ -306,9 +306,9 @@ 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