diff --git a/UPGRADE-4.4.md b/UPGRADE-4.4.md
index e9cee836e7..83b7c58d46 100644
--- a/UPGRADE-4.4.md
+++ b/UPGRADE-4.4.md
@@ -24,6 +24,27 @@ DependencyInjection
my_service:
factory: ['@factory_service', method]
```
+ * Deprecated `tagged` in favor of `tagged_iterator`
+
+ Before:
+ ```yaml
+ services:
+ App\Handler:
+ tags: ['app.handler']
+
+ App\HandlerCollection:
+ arguments: [!tagged app.handler]
+ ```
+
+ After:
+ ```yaml
+ services:
+ App\Handler:
+ tags: ['app.handler']
+
+ App\HandlerCollection:
+ arguments: [!tagged_iterator app.handler]
+ ```
MonologBridge
--------------
diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md
index 49ccf3aa0b..6838418f10 100644
--- a/UPGRADE-5.0.md
+++ b/UPGRADE-5.0.md
@@ -84,6 +84,27 @@ DependencyInjection
my_service:
factory: ['@factory_service', method]
```
+ * Removed `tagged` in favor of `tagged_iterator`
+
+ Before:
+ ```yaml
+ services:
+ App\Handler:
+ tags: ['app.handler']
+
+ App\HandlerCollection:
+ arguments: [!tagged app.handler]
+ ```
+
+ After:
+ ```yaml
+ services:
+ App\Handler:
+ tags: ['app.handler']
+
+ App\HandlerCollection:
+ arguments: [!tagged_iterator app.handler]
+ ```
DoctrineBridge
--------------
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
index a060b723b8..ac0fcb47a3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
@@ -61,7 +61,7 @@
-
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml
index 01e93f131a..10e641c83d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml
@@ -70,13 +70,13 @@
-
+
%kernel.debug%
%kernel.cache_dir%/%kernel.container_class%Deprecations.log
-
+
@@ -99,7 +99,7 @@
-
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json
index b6f7a2c7bc..de007cd0b5 100644
--- a/src/Symfony/Bundle/FrameworkBundle/composer.json
+++ b/src/Symfony/Bundle/FrameworkBundle/composer.json
@@ -20,7 +20,7 @@
"ext-xml": "*",
"symfony/cache": "^4.3|^5.0",
"symfony/config": "^4.2|^5.0",
- "symfony/dependency-injection": "^4.3|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
"symfony/http-foundation": "^4.3|^5.0",
"symfony/http-kernel": "^4.3|^5.0",
"symfony/polyfill-mbstring": "~1.0",
diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md
index 152a17ce9a..7d30dbc646 100644
--- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md
+++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md
@@ -5,6 +5,7 @@ CHANGELOG
-----
* deprecated support for short factories and short configurators in Yaml
+ * deprecated `tagged` in favor of `tagged_iterator`
4.3.0
-----
diff --git a/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php
index 42ee0a25ff..ca7bb60a9b 100644
--- a/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php
+++ b/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php
@@ -287,7 +287,7 @@ class XmlDumper extends Dumper
$element->setAttribute('type', 'collection');
$this->convertParameters($value, $type, $element, 'key');
} elseif ($value instanceof TaggedIteratorArgument || ($value instanceof ServiceLocatorArgument && $tag = $value->getTaggedIteratorArgument())) {
- $element->setAttribute('type', $value instanceof TaggedIteratorArgument ? 'tagged' : 'tagged_locator');
+ $element->setAttribute('type', $value instanceof TaggedIteratorArgument ? 'tagged_iterator' : 'tagged_locator');
$element->setAttribute('tag', $tag->getTag());
if (null !== $tag->getIndexAttribute()) {
diff --git a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
index 89dae636de..cb89bb1758 100644
--- a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
+++ b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
@@ -248,7 +248,7 @@ class YamlDumper extends Dumper
}
}
- return new TaggedValue($value instanceof TaggedIteratorArgument ? 'tagged' : 'tagged_locator', $content);
+ return new TaggedValue($value instanceof TaggedIteratorArgument ? 'tagged_iterator' : 'tagged_locator', $content);
}
if ($value instanceof IteratorArgument) {
diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php
index 87b066faf5..87beeaa392 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php
@@ -115,8 +115,20 @@ function iterator(array $values): IteratorArgument
/**
* Creates a lazy iterator by tag name.
+ *
+ * @deprecated since Symfony 4.4, to be removed in 5.0, use "tagged_iterator" instead.
*/
function tagged(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null): TaggedIteratorArgument
+{
+ @trigger_error(__NAMESPACE__.'\tagged() is deprecated since Symfony 4.4 and will be removed in 5.0, use '.__NAMESPACE__.'\tagged_iterator() instead.', E_USER_DEPRECATED);
+
+ return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
+}
+
+/**
+ * Creates a lazy iterator by tag name.
+ */
+function tagged_iterator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null): TaggedIteratorArgument
{
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
}
diff --git a/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
index bbe2d55695..3980b8618e 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
@@ -545,6 +545,9 @@ class XmlFileLoader extends FileLoader
}
break;
case 'tagged':
+ @trigger_error(sprintf('Type "%s" of tag <%s> in "%s" is deprecated since Symfony 4.4 and will be removed in 5.0, use "tagged_iterator" instead.', $arg->getAttribute('type'), $name, $file), E_USER_DEPRECATED);
+ // no break
+ case 'tagged_iterator':
case 'tagged_locator':
$type = $arg->getAttribute('type');
$forLocator = 'tagged_locator' === $type;
diff --git a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
index cbb39ae035..25cb14b193 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
@@ -725,7 +725,11 @@ class YamlFileLoader extends FileLoader
throw new InvalidArgumentException(sprintf('"!service_locator" tag only accepts maps of "@service" references in "%s".', $file));
}
}
- if (\in_array($value->getTag(), ['tagged', 'tagged_locator'], true)) {
+ if (\in_array($value->getTag(), ['tagged', 'tagged_iterator', 'tagged_locator'], true)) {
+ if ('tagged' === $value->getTag()) {
+ @trigger_error('"!tagged" is deprecated since Symfony 4.4 and will be removed in 5.0, use "!tagged_iterator" instead.', E_USER_DEPRECATED);
+ }
+
$forLocator = 'tagged_locator' === $value->getTag();
if (\is_string($argument) && $argument) {
diff --git a/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd b/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
index 05efb9067f..2da07fde4e 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
+++ b/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
@@ -264,7 +264,9 @@
+
+
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.expected.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.expected.yml
index b425e53cb9..c6a6820275 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.expected.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.expected.yml
@@ -7,7 +7,7 @@ services:
listener_aggregator:
class: Bar\FooClass
public: true
- arguments: [!tagged listener]
+ arguments: [!tagged_iterator listener]
.2_stdClass~%s:
class: stdClass
public: false
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.php
index 27fc96fc9a..112b162bca 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.php
@@ -15,7 +15,7 @@ return function (ContainerConfigurator $c) {
->decorate('decorated', 'decorator42')
->args([ref('decorator42')]);
- $s->set('listener_aggregator', FooClass::class)->public()->args([tagged('listener')]);
+ $s->set('listener_aggregator', FooClass::class)->public()->args([tagged_iterator('listener')]);
$s->set(null, stdClass::class)->tag('listener');
};
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/services9.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/services9.php
index 4a7172b46c..04f5858e6b 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/services9.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/services9.php
@@ -128,7 +128,7 @@ return function (ContainerConfigurator $c) {
$s->set('tagged_iterator', 'Bar')
->public()
- ->args([tagged('foo')]);
+ ->args([tagged_iterator('foo')]);
$s->set('runtime_error', 'stdClass')
->args([new Reference('errored_definition', ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE)])
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services9.xml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services9.xml
index de738521d5..55ec20ee10 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services9.xml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services9.xml
@@ -142,7 +142,7 @@
-
+
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 e3e51d352d..fcf27a8249 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,7 +6,7 @@
-
+
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml
index 4ae8303855..0c90e6bfb3 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml
@@ -8,7 +8,7 @@ services:
public: true
Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory:
- arguments: [!tagged 'bar']
+ arguments: [!tagged_iterator 'bar']
Symfony\Component\DependencyInjection\Tests\Fixtures\BarInterface:
factory: ['@Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory', 'getDefaultBar']
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services9.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services9.yml
index 55528921dc..fd2be046f8 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services9.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services9.yml
@@ -157,7 +157,7 @@ services:
tagged_iterator:
class: Bar
arguments:
- - !tagged foo
+ - !tagged_iterator foo
public: true
Psr\Container\ContainerInterface:
alias: service_container
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 5e071d3278..b30aeb7bff 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,7 +10,7 @@ services:
- { name: foo }
foo_service_tagged_iterator:
class: Bar
- arguments: [!tagged { tag: foo, index_by: barfoo, default_index_method: foobar }]
+ arguments: [!tagged_iterator { tag: foo, index_by: barfoo, default_index_method: foobar }]
foo_service_tagged_locator:
class: Bar
arguments: [!tagged_locator { tag: foo, index_by: barfoo, default_index_method: foobar }]