Skip to content

Commit 14a94a3

Browse files
committed
[DI] Deprecates tagged in favor of tagged_iterator
1 parent 79814a2 commit 14a94a3

File tree

19 files changed

+90
-15
lines changed

19 files changed

+90
-15
lines changed

UPGRADE-4.4.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
UPGRADE FROM 4.3 to 4.4
2+
=======================
3+
4+
DependencyInjection
5+
-------------------
6+
7+
* Deprecated `tagged` in favor of `tagged_iterator`
8+
9+
Before:
10+
```yaml
11+
services:
12+
App\Handler:
13+
tags: ['app.handler']
14+
15+
App\HandlerCollection:
16+
arguments: [!tagged app.handler]
17+
```
18+
19+
After:
20+
```yaml
21+
services:
22+
App\Handler:
23+
tags: ['app.handler']
24+
25+
App\HandlerCollection:
26+
arguments: [!tagged_iterator app.handler]
27+
```

UPGRADE-5.0.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,28 @@ DependencyInjection
6969
env(NAME): '1.5'
7070
```
7171
72+
* Removed `tagged` in favor of `tagged_iterator`
73+
74+
Before:
75+
```yaml
76+
services:
77+
App\Handler:
78+
tags: ['app.handler']
79+
80+
App\HandlerCollection:
81+
arguments: [!tagged app.handler]
82+
```
83+
84+
After:
85+
```yaml
86+
services:
87+
App\Handler:
88+
tags: ['app.handler']
89+
90+
App\HandlerCollection:
91+
arguments: [!tagged_iterator app.handler]
92+
```
93+
7294
DoctrineBridge
7395
--------------
7496

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

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

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

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

Lines changed: 3 additions & 3 deletions
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/Component/DependencyInjection/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
4.4.0
5+
-----
6+
7+
* deprecated `tagged` in favor of `tagged_iterator`
8+
49
4.3.0
510
-----
611

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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 12 additions & 0 deletions
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

Lines changed: 3 additions & 0 deletions
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

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

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

0 commit comments

Comments
 (0)
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