8000 bug #50351 [DependencyInjection] Add `excludeSelf` option to dumpers … · symfony/symfony@3d6e0bd · GitHub
[go: up one dir, main page]

Skip to content

Commit 3d6e0bd

Browse files
bug #50351 [DependencyInjection] Add excludeSelf option to dumpers (HypeMC)
This PR was merged into the 6.3 branch. Discussion ---------- [DependencyInjection] Add `excludeSelf` option to dumpers | Q | A | ------------- | --- | Branch? | 6.3 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | - | License | MIT | Doc PR | - Followup to #48685. It seems that the `excludeSelf` option was not added to the dumpers or configuration functions. I don't think this was done intentionally, but was an oversight. Commits ------- 09c7581 [DependencyInjection] Add exclude-self option to dumpers
2 parents 825fd03 + 09c7581 commit 3d6e0bd

File tree

9 files changed

+20
-14
lines changed

9 files changed

+20
-14
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,9 @@ private function convertParameters(array $parameters, string $type, \DOMElement
324324
}
325325
}
326326
}
327+
if (!$tag->excludeSelf()) {
328+
$element->setAttribute('exclude-self', 'false');
329+
}
327330
} elseif ($value instanceof IteratorArgument) {
328331
$element->setAttribute('type', 'iterator');
329332
$this->convertParameters($value->getValues(), $type, $element, 'key');

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,9 @@ private function dumpValue(mixed $value): mixed
278278
}
279279
$content['exclude'] = 1 === \count($excludes) ? $excludes[0] : $excludes;
280280
}
281+
if (!$tag->excludeSelf()) {
282+
$content['exclude_self'] = false;
283+
}
281284

282285
return new TaggedValue($value instanceof TaggedIteratorArgument ? 'tagged_iterator' : 'tagged_locator', $content);
283286
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,17 +145,17 @@ function iterator(array $values): IteratorArgument
145145
/**
146146
* Creates a lazy iterator by tag name.
147147
*/
148-
function tagged_iterator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null, string $defaultPriorityMethod = null, string|array $exclude = []): TaggedIteratorArgument
148+
function tagged_iterator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null, string $defaultPriorityMethod = null, string|array $exclude = [], bool $excludeSelf = true): TaggedIteratorArgument
149149
{
150-
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod, false, $defaultPriorityMethod, (array) $exclude);
150+
return new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod, false, $defaultPriorityMethod, (array) $exclude, $excludeSelf);
151151
}
152152

153153
/**
154154
* Creates a service locator by tag name.
155155
*/
156-
function tagged_locator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null, string $defaultPriorityMethod = null, string|array $exclude = []): ServiceLocatorArgument
156+
function tagged_locator(string $tag, string $indexAttribute = null, string $defaultIndexMethod = null, string $defaultPriorityMethod = null, string|array $exclude = [], bool $excludeSelf = true): ServiceLocatorArgument
157157
{
158-
return new ServiceLocatorArgument(new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod, true, $defaultPriorityMethod, (array) $exclude));
158+
return new ServiceLocatorArgument(new TaggedIteratorArgument($tag, $indexAttribute, $defaultIndexMethod, true, $defaultPriorityMethod, (array) $exclude, $excludeSelf));
159159
}
160160

161161
/**

src/Symfony/Component/DependencyInjection/Tests/Dumper/XmlDumperTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public function testTaggedArguments()
204204
{
205205
$taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', false, 'getPriority');
206206
$taggedIterator2 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz']);
207-
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz', 'qux']);
207+
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz', 'qux'], false);
208208

209209
$container = new ContainerBuilder();
210210

src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public function testTaggedArguments()
113113
{
114114
$taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', false, 'getPriority');
115115
$taggedIterator2 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz']);
116-
$taggedIterator3 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz', 'qux']);
116+
$taggedIterator3 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz', 'qux'], false);
117117

118118
$container = new ContainerBuilder();
119119

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<argument type="tagged_iterator" tag="foo_tag" exclude="baz"/>
1919
</service>
2020
<service id="foo3_tagged_iterator" class="Bar" public="true">
21-
<argument type="tagged_iterator" tag="foo_tag">
21+
<argument type="tagged_iterator" tag="foo_tag" exclude-self="false">
2222
<exclude>baz</exclude>
2323
<exclude>qux</exclude>
2424
</argument>
@@ -30,7 +30,7 @@
3030
<argument type="tagged_locator" tag="foo_tag" exclude="baz"/>
3131
</service>
3232
<service id="foo3_tagged_locator" class="Bar" public="true">
33-
<argument type="tagged_locator" tag="foo_tag">
33+
<argument type="tagged_locator" tag="foo_tag" exclude-self="false">
3434
<exclude>baz</exclude>
3535
<exclude>qux</exclude>
3636
</argument>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ services:
2424
arguments: [!tagged_iterator { tag: foo, exclude: baz }]
2525
foo3_service_tagged_iterator:
2626
class: Bar
27-
arguments: [!tagged_iterator { tag: foo, exclude: [baz, qux] }]
27+
arguments: [!tagged_iterator { tag: foo, exclude: [baz, qux], exclude_self: false }]
2828
foo_service_tagged_locator:
2929
class: Bar
3030
arguments: [!tagged_locator { tag: foo, index_by: barfoo, default_index_method: foobar, default_priority_method: getPriority }]
@@ -33,7 +33,7 @@ services:
3333
arguments: [!tagged_locator { tag: foo, exclu 10000 de: baz }]
3434
foo3_service_tagged_locator:
3535
class: Bar
36-
arguments: [!tagged_locator { tag: foo, exclude: [baz, qux] }]
36+
arguments: [!tagged_locator { tag: foo, exclude: [baz, qux], exclude_self: false }]
3737
bar_service_tagged_locator:
3838
class: Bar
3939
arguments: [!tagged_locator foo]

src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,14 +417,14 @@ public function testParseTaggedArgumentsWithIndexBy()
417417
$this->assertEquals($taggedIterator, $container->getDefinition('foo_tagged_iterator')->getArgument(0));
418418
$taggedIterator2 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz']);
419419
$this->assertEquals($taggedIterator2, $container->getDefinition('foo2_tagged_iterator')->getArgument(0));
420-
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz', 'qux']);
420+
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', null, null, false, null, ['baz', 'qux'], false);
421421
$this->assertEquals($taggedIterator3, $container->getDefinition('foo3_tagged_iterator')->getArgument(0));
422422

423423
$taggedIterator = new TaggedIteratorArgument('foo_tag', 'barfoo', 'foobar', true, 'getPriority');
424424
$this->assertEquals(new ServiceLocatorArgument($taggedIterator), $container->getDefinition('foo_tagged_locator')->getArgument(0));
425425
$taggedIterator2 = new TaggedIteratorArgument('foo_tag', 'foo_tag', 'getDefaultFooTagName', true, 'getDefaultFooTagPriority', ['baz']);
426426
$this->assertEquals(new ServiceLocatorArgument($taggedIterator2), $container->getDefinition('foo2_tagged_locator')->getArgument(0));
427-
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', 'foo_tag', 'getDefaultFooTagName', true, 'getDefaultFooTagPriority', ['baz', 'qux']);
427+
$taggedIterator3 = new TaggedIteratorArgument('foo_tag', 'foo_tag', 'getDefaultFooTagName', true, 'getDefaultFooTagPriority', ['baz', 'qux'], false);
428428
$this->assertEquals(new ServiceLocatorArgument($taggedIterator3), $container->getDefinition('foo3_tagged_locator')->getArgument(0));
429429
}
430430

src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,14 +408,14 @@ public function testTaggedArgumentsWithIndex()
408408
$this->assertEquals($taggedIterator, $container->getDefinition('foo_service_tagged_iterator')->getArgument(0));
409409
$taggedIterator2 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz']);
410410
$this->assertEquals($taggedIterator2, $container->getDefinition('foo2_service_tagged_iterator')->getArgument(0));
411-
$taggedIterator3 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz', 'qux']);
411+
$taggedIterator3 = new TaggedIteratorArgument('foo', null, null, false, null, ['baz', 'qux'], false);
412412
$this->assertEquals($taggedIterator3, $container->getDefinition('foo3_service_tagged_iterator')->getArgument(0));
413413

414414
$taggedIterator = new TaggedIteratorArgument('foo', 'barfoo', 'foobar', true, 'getPriority');
415415
$this->assertEquals(new ServiceLocatorArgument($taggedIterator), $container->getDefinition('foo_service_tagged_locator')->getArgument(0));
416416
$taggedIterator2 = new TaggedIteratorArgument('foo', 'foo', 'getDefaultFooName', true, 'getDefaultFooPriority', ['baz']);
417417
$this->assertEquals(new ServiceLocatorArgument($taggedIterator2), $container->getDefinition('foo2_service_tagged_locator')->getArgument(0));
418-
$taggedIterator3 = new TaggedIteratorArgument('foo', 'foo', 'getDefaultFooName', true, 'getDefaultFooPriority', ['baz', 'qux']);
418+
$taggedIterator3 = new TaggedIteratorArgument('foo', 'foo', 'getDefaultFooName', true, 'getDefaultFooPriority', ['baz', 'qux'], false);
419419
$this->assertEquals(new ServiceLocatorArgument($taggedIterator3), $container->getDefinition('foo3_service_tagged_locator')->getArgument(0));
420420

421421
$taggedIterator = new TaggedIteratorArgument('foo', null, null, true);

0 commit comments

Comments
 (0)
0