15
15
use Psr \Container \ContainerInterface ;
16
16
use Symfony \Component \Config \FileLocator ;
17
17
use Symfony \Component \DependencyInjection \Alias ;
18
+ use Symfony \Component \DependencyInjection \Argument \RewindableGenerator ;
18
19
use Symfony \Component \DependencyInjection \Argument \ServiceLocatorArgument ;
19
20
use Symfony \Component \DependencyInjection \Argument \TaggedIteratorArgument ;
20
21
use Symfony \Component \DependencyInjection \ChildDefinition ;
32
33
use Symfony \Component \DependencyInjection \Tests \Fixtures \AutoconfiguredInterface2 ;
33
34
use Symfony \Component \DependencyInjection \Tests \Fixtures \AutoconfiguredService1 ;
34
35
use Symfony \Component \DependencyInjection \Tests \Fixtures \AutoconfiguredService2 ;
36
+ use Symfony \Component \DependencyInjection \Tests \Fixtures \AutowireIteratorConsumer ;
35
37
use Symfony \Component \DependencyInjection \Tests \Fixtures \AutowireLocatorConsumer ;
36
38
use Symfony \Component \DependencyInjection \Tests \Fixtures \BarTagClass ;
37
39
use Symfony \Component \DependencyInjection \Tests \Fixtures \FooBarTaggedClass ;
@@ -392,6 +394,7 @@ public function testTaggedServiceWithIndexAttributeAndDefaultMethod()
392
394
public function testLocatorConfiguredViaAttribute ()
393
395
{
394
396
$ container = new ContainerBuilder ();
397
+ $ container ->setParameter ('some.parameter ' , 'foo ' );
395
398
$ container ->register (BarTagClass::class)
396
399
->setPublic (true )
397
400
;
@@ -411,6 +414,36 @@ public function testLocatorConfiguredViaAttribute()
411
414
self ::assertSame ($ container ->get (BarTagClass::class), $ s ->locator ->get (BarTagClass::class));
412
415
self ::assertSame ($ container ->get (FooTagClass::class), $ s ->locator ->get ('with_key ' ));
413
416
self ::assertFalse ($ s ->locator ->has ('nullable ' ));
417
+ self ::assertSame ('foo ' , $ s ->locator ->get ('subscribed ' ));
418
+ }
419
+
420
+ public function testIteratorConfiguredViaAttribute ()
421
+ {
422
+ $ container = new ContainerBuilder ();
423
+ $ container ->setParameter ('some.parameter ' , 'foo ' );
424
+ $ container ->register (BarTagClass::class)
425
+ ->setPublic (true )
426
+ ;
427
+ $ container ->register (FooTagClass::class)
428
+ ->setPublic (true )
429
+ ;
430
+ $ container ->register (AutowireIteratorConsumer::class)
431
+ ->setAutowired (true )
432
+ ->setPublic (true )
433
+ ;
434
+
435
+ $ container ->compile ();
436
+
437
+ /** @var AutowireIteratorConsumer $s */
438
+ $ s = $ container ->get (AutowireIteratorConsumer::class);
439
+
440
+ self ::assertInstanceOf (RewindableGenerator::class, $ s ->iterator );
441
+
442
+ $ values = iterator_to_array ($ s ->iterator );
443
+ self ::assertCount (3 , $ values );
444
+ self ::assertSame ($ container ->get (BarTagClass::class), $ values [BarTagClass::class]);
445
+ self ::assertSame ($ container ->get (FooTagClass::class), $ values ['with_key ' ]);
446
+ self ::assertSame ('foo ' , $ values ['subscribed ' ]);
414
447
}
415
448
416
449
public function testTaggedServiceWithIndexAttributeAndDefaultMethodConfiguredViaAttribute ()
0 commit comments