16
16
use Symfony \Component \DependencyInjection \Alias ;
17
17
use Symfony \Component \DependencyInjection \Argument \ServiceLocatorArgument ;
18
18
use Symfony \Component \DependencyInjection \Argument \TaggedIteratorArgument ;
19
+ use Symfony \Component \DependencyInjection \Attribute \TaggedIterator ;
20
+ use Symfony \Component \DependencyInjection \Attribute \TaggedLocator ;
19
21
use Symfony \Component \DependencyInjection \ChildDefinition ;
20
22
use Symfony \Component \DependencyInjection \Compiler \CompilerPassInterface ;
21
23
use Symfony \Component \DependencyInjection \ContainerBuilder ;
@@ -333,6 +335,10 @@ public function testTaggedServiceWithIndexAttributeAndDefaultMethod()
333
335
public function testTaggedServiceWithIndexAttributeAndDefaultMethodConfiguredViaAttribute ()
334
336
{
335
337
$ container = new ContainerBuilder ();
338
+ $ container ->registerAttributeForAutoconfiguration (TaggedIterator::class, static function (ChildDefinition $ definition , TaggedIterator $ attribute , \ReflectionParameter $ reflector ) {
339
+ $ definition ->
8000
;setArgument ($ reflector ->getPosition (), new TaggedIteratorArgument ($ attribute ->tag , $ attribute ->indexAttribute , null , true ));
340
+ });
341
+
336
342
$ container ->register (BarTagClass::class)
337
343
->setPublic (true )
338
344
->addTag ('foo_bar ' , ['foo ' => 'bar_tab_class_with_defaultmethod ' ])
@@ -343,6 +349,7 @@ public function testTaggedServiceWithIndexAttributeAndDefaultMethodConfiguredVia
343
349
;
344
350
$ container ->register (IteratorConsumer::class)
345
351
->setAutowired (true )
352
+ ->setAutoconfigured (true )
346
353
->setPublic (true )
347
354
;
348
355
@@ -386,6 +393,10 @@ public function testTaggedIteratorWithMultipleIndexAttribute()
386
393
public function testTaggedLocatorConfiguredViaAttribute ()
387
394
{
388
395
$ container = new ContainerBuilder ();
396
+ $ container ->registerAttributeForAutoconfiguration (TaggedLocator::class, static function (ChildDefinition $ definition , TaggedLocator $ attribute , \ReflectionParameter $ reflector ) {
397
+ $ definition ->setArgument ($ reflector ->getPosition (), new ServiceLocatorArgument (new TaggedIteratorArgument ($ attribute ->tag , $ attribute ->indexAttribute , null , true )));
398
+ });
399
+
389
400
$ container ->register (BarTagClass::class)
390
401
->setPublic (true )
391
402
->addTag ('foo_bar ' , ['foo ' => 'bar_tab_class_with_defaultmethod ' ])
@@ -396,6 +407,7 @@ public function testTaggedLocatorConfiguredViaAttribute()
396
407
;
397
408
$ container ->register (LocatorConsumer::class)
398
409
->setAutowired (true )
410
+ ->setAutoconfigured (true )
399
411
->setPublic (true )
400
412
;
401
413
@@ -415,6 +427,10 @@ public function testTaggedLocatorConfiguredViaAttribute()
415
427
public function testTaggedLocatorConfiguredViaAttributeWithoutIndex ()
416
428
{
417
429
$ container = new ContainerBuilder ();
430
+ $ container ->registerAttributeForAutoconfiguration (TaggedLocator::class, static function (ChildDefinition $ definition , TaggedLocator $ attribute , \ReflectionParameter $ reflector ) {
431
+ $ definition ->setArgument ($ reflector ->getPosition (), new ServiceLocatorArgument (new TaggedIteratorArgument ($ attribute ->tag , $ attribute ->indexAttribute , null , true )));
432
+ });
433
+
418
434
$ container ->register (BarTagClass::class)
419
435
->setPublic (true )
420
436
->addTag ('foo_bar ' )
@@ -425,6 +441,7 @@ public function testTaggedLocatorConfiguredViaAttributeWithoutIndex()
425
441
;
426
442
$ container ->register (LocatorConsumerWithoutIndex::class)
427
443
->setAutowired (true )
444
+ ->setAutoconfigured (true )
428
445
->setPublic (true )
429
446
;
430
447
@@ -444,6 +461,10 @@ public function testTaggedLocatorConfiguredViaAttributeWithoutIndex()
444
461
public function testNestedDefinitionWithAutoconfiguredConstructorArgument ()
445
462
{
446
463
$ container = new ContainerBuilder ();
464
+ $ container ->registerAttributeForAutoconfiguration (TaggedLocator::class, static function (ChildDefinition $ definition , TaggedLocator $ attribute , \ReflectionParameter $ reflector ) {
465
+ $ definition ->setArgument ($ reflector ->getPosition (), new ServiceLocatorArgument (new TaggedIteratorArgument ($ attribute ->tag , $ attribute ->indexAttribute , null , true )));
466
+ });
467
+
447
468
$ container ->register (FooTagClass::class)
448
469
->setPublic (true )
449
470
->addTag ('foo_bar ' , ['foo ' => 'foo ' ])
@@ -452,7 +473,8 @@ public function testNestedDefinitionWithAutoconfiguredConstructorArgument()
452
473
->setPublic (true )
453
474
->setArguments ([
454
475
(new Definition (LocatorConsumer::class))
455
- ->setAutowired (true ),
476
+ ->setAutowired (true )
477
+ ->setAutoconfigured (true ),
<
B25C
tr class="diff-line-row">456
478
])
457
479
;
458
480
@@ -471,6 +493,10 @@ public function testNestedDefinitionWithAutoconfiguredConstructorArgument()
471
493
public function testFactoryWithAutoconfiguredArgument ()
472
494
{
473
495
$ container = new ContainerBuilder ();
496
+ $ container ->registerAttributeForAutoconfiguration (TaggedLocator::class, static function (ChildDefinition $ definition , TaggedLocator $ attribute , \ReflectionParameter $ reflector ) {
497
+ $ definition ->setArgument ($ reflector ->getPosition (), new ServiceLocatorArgument (new TaggedIteratorArgument ($ attribute ->tag , $ attribute ->indexAttribute , null , true )));
498
+ });
499
+
474
500
$ container ->register (FooTagClass::class)
475
501
->setPublic (true )
476
502
->addTag ('foo_bar ' , ['key ' => 'my_service ' ])
@@ -479,6 +505,7 @@ public function testFactoryWithAutoconfiguredArgument()
479
505
$ container ->register (LocatorConsumer::class)
480
506
->setPublic (true )
481
507
->setAutowired (true )
508
+ ->setAutoconfigured (true )
482
509
->setFactory (new Reference (LocatorConsumerFactory::class))
483
510
;
484
511
0 commit comments