8000 [DI] deprecates tag tagged in favor of tagged_iterator · symfony/symfony@d56bc8b · GitHub
[go: up one dir, main page]

Skip to content

Commit d56bc8b

Browse files
committed
[DI] deprecates tag tagged in favor of tagged_iterator
1 parent 0c78413 commit d56bc8b

File tree

14 files changed

+31
-11
lines changed

14 files changed

+31
-11
lines changed

src/Symfony/Component/DependencyInjection/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ CHANGELOG
1616
* made `ServiceLocator` implement `ServiceProviderInterface`
1717
* deprecated support for non-string default env() parameters
1818
* added `%env(require:...)%` processor to `require()` a PHP file and use the value returned from it
19-
19+
* deprecated tag `tagged` in favour of `tagged_iterator`
20+
2021
4.2.0
2122
-----
2223

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: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,14 @@ function tagged(string $tag, string $indexAttribute = null, string $defaultIndex
121121
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
122122
}
123123

124+
/**
125+
* Creates a lazy iterator by tag name.
126+
*/
127+
function tagged_iterator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null): TaggedIteratorArgument
128+
{
129+
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod);
130+
}
131+
124132
/**
125133
* Creates a service locator by tag name.
57AE
126134
*/

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,8 +545,14 @@ private function getArgumentsAsPhp(\DOMElement $node, $name, $file, $lowercase =
545545
}
546546
break;
547547
case 'tagged':
548+
case 'tagged_iterator':
548549
case 'tagged_locator':
549550
$type = $arg->getAttribute('type');
551+
552+
if ('tagged' === $type) {
553+
@trigger_error(sprintf('Type "%s" of Tag <%s> in "%s" is deprecated and will be removed in Symfony 5. Please use "tagged_iterator"', $type, $name, $file), E_USER_DEPRECATED);
554+
}
555+
550556
$forLocator = 'tagged_locator' === $type;
551557

552558
if (!$arg->getAttribute('tag')) {

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" tag is deprecated and will be removed in Symfony 5. Please use "!tagged_iterator"', E_USER_DEPRECATED);
730+
}
731+
728732
$forLocator = 'tagged_locator' === $value->getTag();
729733

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

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@
265265
<xsd:enumeration value="iterator" />
266266
<xsd:enumeration value="service_locator" />
267267
<xsd:enumeration value="tagged" />
268+
<xsd:enumeration value="tagged_iterator" />
268269
<xsd:enumeration value="tagged_locator" />
269270
</xsd:restriction>
270271
</xsd:simpleType>

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

Lines changed: 1 addition & 1 deletion
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/services9.php

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
<tag name="foo"/>
143143
</service>
144144
<service id="tagged_iterator" class=< EF5E span class="pl-s">"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

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

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

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

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