Skip to content

Commit e4f04fa

Browse files
[DI] Turn services and aliases private by default, with BC layer
1 parent db554b9 commit e4f04fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+231
-101
lines changed

Alias.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Alias
1515
{
1616
private $id;
1717
private $public;
18-
private $private = false;
18+
private $private;
1919

2020
/**
2121
* @param string $id Alias identifier
@@ -25,6 +25,7 @@ public function __construct($id, $public = true)
2525
{
2626
$this->id = (string) $id;
2727
$this->public = $public;
28+
$this->private = 2 > func_num_args();
2829
}
2930

3031
/**
@@ -47,6 +48,7 @@ public function isPublic()
4748
public function setPublic($boolean)
4849
{
4950
$this->public = (bool) $boolean;
51+
$this->private = false;
5052

5153
return $this;
5254
}

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ CHANGELOG
44
3.4.0
55
-----
66

7+
* deprecated "public-by-default" definitions and aliases, the new default will be "private" in 4.0
78
* added `EnvVarProcessorInterface` and corresponding "container.env_var_processor" tag for processing env vars
89
* added support for ignore-on-uninitialized references
910
* deprecated service auto-registration while autowiring

Compiler/AutoAliasServicePass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ 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));
36+
$container->setAlias($serviceId, new Alias($aliasId, true));
3737
}
3838
}
3939
}

Compiler/CheckDefinitionValidityPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function process(ContainerBuilder $container)
3939
{
4040
foreach ($container->getDefinitions() as $id => $definition) {
4141
// synthetic service is public
42-
if ($definition->isSynthetic() && (!$definition->isPublic() || $definition->isPrivate())) {
42+
if ($definition->isSynthetic() && !($definition->isPublic() || $definition->isPrivate())) {
4343
throw new RuntimeException(sprintf('A synthetic service ("%s") must be public.', $id));
4444
}
4545

Compiler/DecoratorServicePass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public function process(ContainerBuilder $container)
6767
$container->setDefinition($renamedId, $decoratedDefinition);
6868
}
6969

70-
$container->setAlias($inner, $id)->setPublic($public && !$private)->setPrivate($private);
70+
$container->setAlias($inner, $id)->setPublic($public)->setPrivate($private);
7171
}
7272
}
7373
}

Compiler/RegisterEnvVarProcessorsPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public function process(ContainerBuilder $container)
5252
$bag->setProvidedTypes($types);
5353
}
5454
$container->register('container.env_var_processors_locator', ServiceLocator::class)
55+
->setPublic(true)
5556
->setArguments(array($processors))
5657
;
5758
}

Compiler/ReplaceAliasByActualDefinitionPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function process(ContainerBuilder $container)
4545
}
4646
// Check if target needs to be replaces
4747
if (isset($replacements[$targetId])) {
48-
$container->setAlias($definitionId, $replacements[$targetId]);
48+
$container->setAlias($definitionId, $replacements[$targetId])->setPublic($target->isPublic())->setPrivate($target->isPrivate());
4949
}
5050
// No need to process the same target twice
5151
if (isset($seenAliasTargets[$targetId])) {

Compiler/ResolveChildDefinitionsPass.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ public function process(ContainerBuilder $container)
3636
foreach ($container->getDefinitions() as $definition) {
3737
if ($definition->isPrivate()) {
3838
$definition->setPublic(false);
39+
$definition->setPrivate(true);
3940
}
4041
}
4142

4243
foreach ($container->getAliases() as $alias) {
4344
if ($alias->isPrivate()) {
4445
$alias->setPublic(false);
46+
$alias->setPrivate(true);
4547
}
4648
}
4749
}

Compiler/ResolveReferencesToAliasesPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function process(ContainerBuilder $container)
3232
foreach ($container->getAliases() as $id => $alias) {
3333
$aliasId = (string) $alias;
3434
if ($aliasId !== $defId = $this->getDefinitionId($aliasId, $container)) {
35-
$container->setAlias($id, $defId)->setPublic($alias->isPublic() && !$alias->isPrivate())->setPrivate($alias->isPrivate());
35+
$container->setAlias($id, $defId)->setPublic($alias->isPublic())->setPrivate($alias->isPrivate());
3636
}
3737
}
3838
}

Definition.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Definition
3535
private $configurator;
3636
private $tags = array();
3737
private $public = true;
38-
private $private = false;
38+
private $private = true;
3939
private $synthetic = false;
4040
private $abstract = false;
4141
private $lazy = false;
@@ -603,6 +603,7 @@ public function setPublic($boolean)
603603
$this->changes['public'] = true;
604604

605605
$this->public = (bool) $boolean;
606+
$this->private = false;
606607

607608
return $this;
608609
}

0 commit comments

Comments
 (0)