Skip to content

Commit ab8fb18

Browse files
jschaedlnicolas-grekas
authored andcommitted
[DI] deprecates tag !tagged in favor of !tagged_iterator
1 parent 8e5b657 commit ab8fb18

20 files changed

+80
-16
lines changed

UPGRADE-4.4.md

+21
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,27 @@ DependencyInjection
2424
my_service:
2525
factory: ['@factory_service', method]
2626
```
27+
* Deprecated `tagged` in favor of `tagged_iterator`
28+
29+
Before:
30+
```yaml
31+
services:
32+
App\Handler:
33+
tags: ['app.handler']
34+
35+
App\HandlerCollection:
36+
arguments: [!tagged app.handler]
37+
```
38+
39+
After:
40+
```yaml
41+
services:
42+
App\Handler:
43+
tags: ['app.handler']
44+
45+
App\HandlerCollection:
46+
arguments: [!tagged_iterator app.handler]
47+
```
2748

2849
MonologBridge
2950
--------------

UPGRADE-5.0.md

+21
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,27 @@ DependencyInjection
8484
my_service:
8585
factory: ['@factory_service', method]
8686
```
87+
* Removed `tagged` in favor of `tagged_iterator`
88+
89+
Before:
90+
```yaml
91+
services:
92+
App\Handler:
93+
tags: ['app.handler']
94+
95+
App\HandlerCollection:
96+
arguments: [!tagged app.handler]
97+
```
98+
99+
After:
100+
```yaml
101+
services:
102+
App\Handler:
103+
tags: ['app.handler']
104+
105+
App\HandlerCollection:
106+
arguments: [!tagged_iterator app.handler]
107+
```
87108

88109
DoctrineBridge
89110
--------------

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
<!-- transports -->
6363
<service id="messenger.transport_factory" class="Symfony\Component\Messenger\Transport\TransportFactory">
64-
<argument type="tagged" tag="messenger.transport_factory" />
64+
<argument type="tagged_iterator" tag="messenger.transport_factory" />
6565
</service>
6666

6767
<service id="messenger.transport.amqp.factory" class="Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory">

src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@
7070
<service id="Symfony\Component\HttpFoundation\UrlHelper" alias="url_helper" />
7171

7272
<service id="cache_warmer" class="Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate" public="true">
73-
<argument type="tagged" tag="kernel.cache_warmer" />
73+
<argument type="tagged_iterator" tag="kernel.cache_warmer" />
7474
<argument>%kernel.debug%</argument>
7575
<argument>%kernel.cache_dir%/%kernel.container_class%Deprecations.log</argument>
7676
</service>
7777

7878
<service id="cache_clearer" class="Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer" public="true">
79-
<argument type="tagged" tag="kernel.cache_clearer" />
79+
<argument type="tagged_iterator" tag="kernel.cache_clearer" />
8080
</service>
8181

8282
<service id="kernel" synthetic="true" public="true" />
@@ -99,7 +99,7 @@
9999
</service>
100100

101101
<service id="config_cache_factory" class="Symfony\Component\Config\ResourceCheckerConfigCacheFactory">
102-
<argument type="tagged" tag="config_cache.resource_checker" />
102+
<argument type="tagged_iterator" tag="config_cache.resource_checker" />
103103
</service>
104104

105105
<service id="dependency_injection.config.container_parameters_resource_checker" class="Symfony\Component\DependencyInjection\Config\ContainerParametersResourceChecker">

src/Symfony/Bundle/FrameworkBundle/composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"ext-xml": "*",
2121
"symfony/cache": "^4.3|^5.0",
2222
"symfony/config": "^4.2|^5.0",
23-
"symfony/dependency-injection": "^4.3|^5.0",
23+
"symfony/dependency-injection": "^4.4|^5.0",
2424
"symfony/http-foundation": "^4.3|^5.0",
2525
"symfony/http-kernel": "^4.3|^5.0",
2626
"symfony/polyfill-mbstring": "~1.0",

src/Symfony/Component/DependencyInjection/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ CHANGELOG
55
-----
66

77
* deprecated support for short factories and short configurators in Yaml
8+
* deprecated `tagged` in favor of `tagged_iterator`
89

910
4.3.0
1011
-----

src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ private function convertParameters(array $parameters, $type, \DOMElement $parent
287287
$element->setAttribute('type', 'collection');
288288
$this->convertParameters($value, $type, $element, 'key');
289289
} elseif ($value instanceof TaggedIteratorArgument || ($value instanceof ServiceLocatorArgument && $tag = $value->getTaggedIteratorArgument())) {
290-
$element->setAttribute('type', $value instanceof TaggedIteratorArgument ? 'tagged' : 'tagged_locator');
290+
$element->setAttribute('type', $value instanceof TaggedIteratorArgument ? 'tagged_iterator' : 'tagged_locator');
291291
$element->setAttribute('tag', $tag->getTag());
292292

293293
if (null !== $tag->getIndexAttribute()) {

src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ private function dumpValue($value)
248248
}
249249
}
250250

251-
return new TaggedValue($value instanceof TaggedIteratorArgument ? 'tagged' : 'tagged_locator', $content);
251+
return new TaggedValue($value instanceof TaggedIteratorArgument ? 'tagged_iterator' : 'tagged_locator', $content);
252252
}
253253

254254
if ($value instanceof IteratorArgument) {

src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php

+12
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,20 @@ function iterator(array $values): IteratorArgument
115115

116116
/**
117117
* Creates a lazy iterator by tag name.
118+
*
119+
* @deprecated since Symfony 4.4, to be removed in 5.0, use "tagged_iterator" instead.
118120
*/
119121
function tagged(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null): TaggedIteratorArgument
122+
{
123+
@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);
124+
125+
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
126+
}
127+
128+
/**
129+
* Creates a lazy iterator by tag name.
130+
*/
131+
function tagged_iterator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null): TaggedIteratorArgument
120132
{
121133
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
122134
}

src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php

+3
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,9 @@ private function getArgumentsAsPhp(\DOMElement $node, $name, $file, $lowercase =
545545
}
546546
break;
547547
case 'tagged':
548+
@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);
549+
// no break
550+
case 'tagged_iterator':
548551
case 'tagged_locator':
549552
$type = $arg->getAttribute('type');
550553
$forLocator = 'tagged_locator' === $type;

src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,11 @@ private function resolveServices($value, $file, $isParameter = false)
725725
throw new InvalidArgumentException(sprintf('"!service_locator" tag only accepts maps of "@service" references in "%s".', $file));
726726
}
727727
}
728-
if (\in_array($value->getTag(), ['tagged', 'tagged_locator'], true)) {
728+
if (\in_array($value->getTag(), ['tagged', 'tagged_iterator', 'tagged_locator'], true)) {
729+
if ('tagged' === $value->getTag()) {
730+
@trigger_error('"!tagged" is deprecated since Symfony 4.4 and will be removed in 5.0, use "!tagged_iterator" instead.', E_USER_DEPRECATED);
731+
}
732+
729733
$forLocator = 'tagged_locator' === $value->getTag();
730734

731735
if (\is_string($argument) && $argument) {

src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd

+2
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,9 @@
264264
<xsd:enumeration value="constant" />
265265
<xsd:enumeration value="iterator" />
266266
<xsd:enumeration value="service_locator" />
267+
<!-- "tagged" is deprecated since Symfony 4.4 and will be removed in 5.0, use "tagged_iterator" instead. -->
267268
<xsd:enumeration value="tagged" />
269+
<xsd:enumeration value="tagged_iterator" />
268270
<xsd:enumeration value="tagged_locator" />
269271
</xsd:restriction>
270272
</xsd:simpleType>

src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.expected.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ services:
77
listener_aggregator:
88
class: Bar\FooClass
99
public: true
10-
arguments: [!tagged listener]
10+
arguments: [!tagged_iterator listener]
1111
.2_stdClass~%s:
1212
class: stdClass
1313
public: false

src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/anonymous.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
->decorate('decorated', 'decorator42')
1616
->args([ref('decorator42')]);
1717

18-
$s->set('listener_aggregator', FooClass::class)->public()->args([tagged('listener')]);
18+
$s->set('listener_aggregator', FooClass::class)->public()->args([tagged_iterator('listener')]);
1919

2020
$s->set(null, stdClass::class)->tag('listener');
2121
};

src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/services9.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128

129129
$s->set('tagged_iterator', 'Bar')
130130
->public()
131-
->args([tagged('foo')]);
131+
->args([tagged_iterator('foo')]);
132132

133133
$s->set('runtime_error', 'stdClass')
134134
->args([new Reference('errored_definition', ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE)])

src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services9.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
<tag name="foo"/>
143143
</service>
144144
<service id="tagged_iterator" class="Bar" public="true">
145-
<argument type="tagged" tag="foo"/>
145+
<argument type="tagged_iterator" tag="foo"/>
146146
</service>
147147
<service id="runtime_error" class="stdClass" public="true">
148148
<argument type="service" id="errored_definition"/>

src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services_with_tagged_arguments.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<tag name="foo_tag"/>
77
</service>
88
<service id="foo_tagged_iterator" class="Bar" public="true">
9-
<argument type="tagged" tag="foo_tag" index-by="barfoo" default-index-method="foobar"/>
9+
<argument type="tagged_iterator" tag="foo_tag" index-by="barfoo" default-index-method="foobar"/>
1010
</service>
1111
<service id="foo_tagged_locator" class="Bar" public="true">
1212
<argument type="tagged_locator" tag="foo_tag" index-by="barfoo" default-index-method="foobar"/>

src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ services:
88
public: true
99

1010
Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory:
11-
arguments: [!tagged 'bar']
11+
arguments: [!tagged_iterator 'bar']
1212

1313
Symfony\Component\DependencyInjection\Tests\Fixtures\BarInterface:
1414
factory: ['@Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory', 'getDefaultBar']

src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services9.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ services:
157157
tagged_iterator:
158158
class: Bar
159159
arguments:
160-
- !tagged foo
160+
- !tagged_iterator foo
161161
public: true
162162
Psr\Container\ContainerInterface:
163163
alias: service_container

src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services_with_tagged_argument.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ services:
1010
- { name: foo }
1111
foo_service_tagged_iterator:
1212
class: Bar
13-
arguments: [!tagged { tag: foo, index_by: barfoo, default_index_method: foobar }]
13+
arguments: [!tagged_iterator { tag: foo, index_by: barfoo, default_index_method: foobar }]
1414
foo_service_tagged_locator:
1515
class: Bar
1616
arguments: [!tagged_locator { tag: foo, index_by: barfoo, default_index_method: foobar }]

0 commit comments

Comments
 (0)