File tree Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -345,10 +345,11 @@ private static function getResourceMetadataForMethod(\ReflectionMethod $method)
345345 $ class = false ;
346346 }
347347
348+ $ isVariadic = method_exists ($ parameter , 'isVariadic ' ) && $ parameter ->isVariadic ();
348349 $ methodArgumentsMetadata [] = array (
349350 'class ' => $ class ,
350351 'isOptional ' => $ parameter ->isOptional (),
351- 'defaultValue ' => $ parameter ->isOptional () ? $ parameter ->getDefaultValue () : null ,
352+ 'defaultValue ' => ( $ parameter ->isOptional () && ! $ isVariadic ) ? $ parameter ->getDefaultValue () : null ,
352353 );
353354 }
354355
Original file line number Diff line number Diff line change 1414use Symfony \Component \DependencyInjection \Compiler \AutowirePass ;
1515use Symfony \Component \DependencyInjection \ContainerBuilder ;
1616use Symfony \Component \DependencyInjection \Reference ;
17+ use Symfony \Component \DependencyInjection \Tests \Fixtures \includes \FooVariadic ;
1718
1819/**
1920 * @author Kévin Dunglas <dunglas@gmail.com>
@@ -35,6 +36,23 @@ public function testProcess()
3536 $ this ->assertEquals ('foo ' , (string ) $ container ->getDefinition ('bar ' )->getArgument (0 ));
3637 }
3738
39+ /**
40+ * @requires PHP 5.6
41+ */
42+ public function testProcessVariadic ()
43+ {
44+ $ container = new ContainerBuilder ();
45+ $ container ->register ('foo ' , Foo::class);
46+ $ definition = $ container ->register ('fooVariadic ' , FooVariadic::class);
47+ $ definition ->setAutowired (true );
48+
49+ $ pass = new AutowirePass ();
50+ $ pass ->process ($ container );
51+
52+ $ this ->assertCount (1 , $ container ->getDefinition ('fooVariadic ' )->getArguments ());
53+ $ this ->assertEquals ('foo ' , (string ) $ container ->getDefinition ('fooVariadic ' )->getArgument (0 ));
54+ }
55+
3856 public function testProcessAutowireParent ()
3957 {
4058 $ container = new ContainerBuilder ();
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Symfony \Component \DependencyInjection \Tests \Fixtures \includes ;
4+
5+ use Symfony \Component \DependencyInjection \Tests \Compiler \Foo ;
6+
7+ class FooVariadic
8+ {
9+ public function __construct (Foo $ foo )
10+ {
11+ }
12+
13+ public function bar (...$ arguments )
14+ {
15+ }
16+ }
You can’t perform that action at this time.
0 commit comments