Skip to content

Commit afc7953

Browse files
Merge branch '5.4' into 6.0
* 5.4: [FrameworkBundle] fix session-related BC layer triggering deprecation [DependencyInjection] Make auto-aliases private by default
2 parents e2bdc6f + ff3306a commit afc7953

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ CHANGELOG
1515

1616
* Add `service_closure()` to the PHP-DSL
1717
* Add support for autoconfigurable attributes on methods, properties and parameters
18+
* Make auto-aliases private by default
1819

1920
5.3
2021
---

Compiler/AutoAliasServicePass.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public function process(ContainerBuilder $container)
3333

3434
$aliasId = $container->getParameterBag()->resolveValue($tag['format']);
3535
if ($container->hasDefinition($aliasId) || $container->hasAlias($aliasId)) {
36-
$container->setAlias($serviceId, new Alias($aliasId, true));
36+
$alias = new Alias($aliasId, $container->getDefinition($serviceId)->isPublic());
37+
$container->setAlias($serviceId, $alias);
3738
}
3839
}
3940
}

Compiler/ReplaceAliasByActualDefinitionPass.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,20 @@ public function process(ContainerBuilder $container)
3636
// First collect all alias targets that need to be replaced
3737
$seenAliasTargets = [];
3838
$replacements = [];
39+
3940
foreach ($container->getAliases() as $definitionId => $target) {
4041
$targetId = (string) $target;
4142
// Special case: leave this target alone
4243
if ('service_container' === $targetId) {
4344
continue;
4445
}
45-
// Check if target needs to be replaces
46+
// Check if target needs to be replaced
4647
if (isset($replacements[$targetId])) {
4748
$container->setAlias($definitionId, $replacements[$targetId])->setPublic($target->isPublic());
49+
50+
if ($target->isDeprecated()) {
51+
$container->getAlias($definitionId)->setDeprecated(...array_values($target->getDeprecation('%alias_id%')));
52+
}
4853
}
4954
// No need to process the same target twice
5055
if (isset($seenAliasTargets[$targetId])) {
@@ -69,6 +74,10 @@ public function process(ContainerBuilder $container)
6974
$container->setDefinition($definitionId, $definition);
7075
$container->removeDefinition($targetId);
7176
$replacements[$targetId] = $definitionId;
77+
78+
if ($target->isPublic() && $target->isDeprecated()) {
79+
$definition->addTag('container.private', $target->getDeprecation('%service_id%'));
80+
}
7281
}
7382
$this->replacements = $replacements;
7483

Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,22 @@ public function testProcess()
3131
$bDefinition = new Definition('\stdClass');
3232
$container->setDefinition('b', $bDefinition);
3333

34-
$container->setAlias('a_alias', 'a')->setPublic(true);
35-
$container->setAlias('b_alias', 'b')->setPublic(true);
34+
$container->setAlias('a_alias', 'a')->setPublic(true)->setDeprecated('foo/bar', '1.2', '%alias_id%');
35+
$container->setAlias('b_alias', 'b')->setPublic(true)->setDeprecated('foo/bar', '1.2', '%alias_id%');
3636

3737
$container->setAlias('container', 'service_container');
3838

3939
$this->process($container);
4040

4141
$this->assertTrue($container->has('a'), '->process() does nothing to public definitions.');
4242
$this->assertTrue($container->hasAlias('a_alias'));
43+
$this->assertTrue($container->getAlias('a_alias')->isDeprecated());
4344
$this->assertFalse($container->has('b'), '->process() removes non-public definitions.');
4445
$this->assertTrue(
4546
$container->has('b_alias') && !$container->hasAlias('b_alias'),
4647
'->process() replaces alias to actual.'
4748
);
49+
$this->assertTrue($container->getDefinition('b_alias')->hasTag('container.private'));
4850

4951
$this->assertTrue($container->has('container'));
5052

0 commit comments

Comments
 (0)