diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php
index 73c284f806a1d..747e0496ee9a4 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php
@@ -23,6 +23,7 @@
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
use Symfony\Component\DependencyInjection\Tests\Fixtures\BarTagClass;
use Symfony\Component\DependencyInjection\Tests\Fixtures\FooBarTaggedClass;
+use Symfony\Component\DependencyInjection\Tests\Fixtures\FooBarTaggedForDefaultPriorityClass;
use Symfony\Component\DependencyInjection\Tests\Fixtures\FooTagClass;
/**
@@ -289,6 +290,30 @@ public function testTaggedServiceWithIndexAttributeAndDefaultMethod()
$this->assertSame(['bar_tab_class_with_defaultmethod' => $container->get(BarTagClass::class), 'foo' => $container->get(FooTagClass::class)], $param);
}
+ public function testTaggedServiceWithDefaultPriorityMethod()
+ {
+ $container = new ContainerBuilder();
+ $container->register(BarTagClass::class)
+ ->setPublic(true)
+ ->addTag('foo_bar')
+ ;
+ $container->register(FooTagClass::class)
+ ->setPublic(true)
+ ->addTag('foo_bar', ['foo' => 'foo'])
+ ;
+ $container->register(FooBarTaggedForDefaultPriorityClass::class)
+ ->addArgument(new TaggedIteratorArgument('foo_bar', null, null, false, 'getPriority'))
+ ->setPublic(true)
+ ;
+
+ $container->compile();
+
+ $s = $container->get(FooBarTaggedForDefaultPriorityClass::class);
+
+ $param = iterator_to_array($s->getParam()->getIterator());
+ $this->assertSame([$container->get(FooTagClass::class), $container->get(BarTagClass::class)], $param);
+ }
+
public function testTaggedServiceLocatorWithIndexAttribute()
{
$container = new ContainerBuilder();
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/XmlDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/XmlDumperTest.php
index e6eaf8f5a9708..17f839fa56276 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/XmlDumperTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/XmlDumperTest.php
@@ -204,7 +204,7 @@ public function testDumpLoad()
public function testTaggedArguments()
{
- $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar');
+ $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', false, 'getPriority');
$container = new ContainerBuilder();
$container->register('foo', 'Foo')->addTag('foo_tag');
$container->register('foo_tagged_iterator', 'Bar')
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
index 9b1ff3245f118..93b9e85783e62 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
@@ -99,7 +99,7 @@ public function testInlineServices()
public function testTaggedArguments()
{
- $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar');
+ $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', false, 'getPriority');
$container = new ContainerBuilder();
$container->register('foo_service', 'Foo')->addTag('foo');
$container->register('foo_service_tagged_iterator', 'Bar')->addArgument($taggedIterator);
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarTagClass.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarTagClass.php
index 9e065f6b102a9..158faa35247cd 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarTagClass.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarTagClass.php
@@ -13,4 +13,9 @@ public static function getFooBar()
{
return 'bar_tab_class_with_defaultmethod';
}
+
+ public static function getPriority(): int
+ {
+ return 0;
+ }
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooBarTaggedForDefaultPriorityClass.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooBarTaggedForDefaultPriorityClass.php
new file mode 100644
index 0000000000000..4dafc0a46589d
--- /dev/null
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooBarTaggedForDefaultPriorityClass.php
@@ -0,0 +1,18 @@
+param = $param;
+ }
+
+ public function getParam()
+ {
+ return $this->param;
+ }
+}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooTagClass.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooTagClass.php
index c1279b9a9feeb..75bbc2c21d9cc 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooTagClass.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/FooTagClass.php
@@ -8,4 +8,11 @@ public static function getDefaultFooName()
{
return 'foo_tag_class';
}
+
+ public static function getPriority(): int
+ {
+ // Should be more than BarTagClass. More because this class is after
+ // BarTagClass (order by name). So we want to ensure it will be before it
+ return 20;
+ }
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services_with_tagged_arguments.xml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services_with_tagged_arguments.xml
index fcf27a824963f..6992f8432430f 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services_with_tagged_arguments.xml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services_with_tagged_arguments.xml
@@ -6,10 +6,10 @@
-
+
-
+
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services_with_tagged_argument.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services_with_tagged_argument.yml
index 8c2cd59aaf8b3..2b76522827de5 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services_with_tagged_argument.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services_with_tagged_argument.yml
@@ -10,10 +10,10 @@ services:
- { name: foo }
foo_service_tagged_iterator:
class: Bar
- arguments: [!tagged_iterator { tag: foo, index_by: barfoo, default_index_method: foobar }]
+ arguments: [!tagged_iterator { tag: foo, index_by: barfoo, default_index_method: foobar, default_priority_method: getPriority }]
foo_service_tagged_locator:
class: Bar
- arguments: [!tagged_locator { tag: foo, index_by: barfoo, default_index_method: foobar }]
+ arguments: [!tagged_locator { tag: foo, index_by: barfoo, default_index_method: foobar, default_priority_method: getPriority }]
bar_service_tagged_locator:
class: Bar
arguments: [!tagged_locator foo]
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php
index ed6b74bbbdbdc..b5ca7c919cf52 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php
@@ -327,10 +327,10 @@ public function testParseTaggedArgumentsWithIndexBy()
$this->assertCount(1, $container->getDefinition('foo_tagged_iterator')->getArguments());
$this->assertCount(1, $container->getDefinition('foo_tagged_locator')->getArguments());
- $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar');
+ $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', false, 'getPriority');
$this->assertEquals($taggedIterator, $container->getDefinition('foo_tagged_iterator')->getArgument(0));
- $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', true);
+ $taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', true, 'getPriority');
$this->assertEquals(new ServiceLocatorArgument($taggedIterator), $container->getDefinition('foo_tagged_locator')->getArgument(0));
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php
index fda3f0ddd2d5f..2e116132a35dd 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php
@@ -306,10 +306,10 @@ public function testTaggedArgumentsWithIndex()
$this->assertCount(1, $container->getDefinition('foo_service_tagged_iterator')->getArguments());
$this->assertCount(1, $container->getDefinition('foo_service_tagged_locator')->getArguments());
- $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar');
+ $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', false, 'getPriority');
$this->assertEquals($taggedIterator, $container->getDefinition('foo_service_tagged_iterator')->getArgument(0));
- $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', true);
+ $taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', true, 'getPriority');
$this->assertEquals(new ServiceLocatorArgument($taggedIterator), $container->getDefinition('foo_service_tagged_locator')->getArgument(0));
if (is_subclass_of('Symfony\Component\Yaml\Exception\ExceptionInterface', 'Throwable')) {
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy