Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions UPGRADE-5.2.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
UPGRADE FROM 5.1 to 5.2
=======================

DependencyInjection
-------------------

* Deprecated `Definition::setPrivate()` and `Alias::setPrivate()`, use `setPublic()` instead

Mime
----

Expand Down
1 change: 1 addition & 0 deletions UPGRADE-6.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ DependencyInjection
* Removed `Alias::getDeprecationMessage()`, use `Alias::getDeprecation()` instead.
* The `inline()` function from the PHP-DSL has been removed, use `inline_service()` instead.
* The `ref()` function from the PHP-DSL has been removed, use `service()` instead.
* Removed `Definition::setPrivate()` and `Alias::setPrivate()`, use `setPublic()` instead

Dotenv
------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,6 @@ protected function loadCacheDriver(string $cacheName, string $objectManagerName,
$memcachedPort = !empty($cacheDriver['port']) ? $cacheDriver['port'] : '%'.$this->getObjectManagerElementName('cache.memcached_port').'%';
$cacheDef = new Definition($memcachedClass);
$memcachedInstance = new Definition($memcachedInstanceClass);
$memcachedInstance->setPrivate(true);
$memcachedInstance->addMethodCall('addServer', [
$memcachedHost, $memcachedPort,
]);
Expand All @@ -310,7 +309,6 @@ protected function loadCacheDriver(string $cacheName, string $objectManagerName,
$redisPort = !empty($cacheDriver['port']) ? $cacheDriver['port'] : '%'.$this->getObjectManagerElementName('cache.redis_port').'%';
$cacheDef = new Definition($redisClass);
$redisInstance = new Definition($redisInstanceClass);
$redisInstance->setPrivate(true);
$redisInstance->addMethodCall('connect', [
$redisHost, $redisPort,
]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -781,7 +781,6 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
// Enable the AuditTrail
if ($workflow['audit_trail']['enabled']) {
$listener = new Definition(Workflow\EventListener\AuditTrailListener::class);
$listener->setPrivate(true);
$listener->addTag('monolog.logger', ['channel' => 'workflow']);
$listener->addTag('kernel.event_listener', ['event' => sprintf('workflow.%s.leave', $name), 'method' => 'onLeave']);
$listener->addTag('kernel.event_listener', ['event' => sprintf('workflow.%s.transition', $name), 'method' => 'onTransition']);
Expand All @@ -801,7 +800,6 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
}

$guard = new Definition(Workflow\EventListener\GuardListener::class);
$guard->setPrivate(true);

$guard->setArguments([
$guardsConfiguration,
Expand Down Expand Up @@ -829,7 +827,6 @@ private function registerDebugConfiguration(array $config, ContainerBuilder $con
if (class_exists(Stopwatch::class)) {
$container->register('debug.stopwatch', Stopwatch::class)
->addArgument(true)
->setPrivate(true)
->addTag('kernel.reset', ['method' => 'reset']);
$container->setAlias(Stopwatch::class, new Alias('debug.stopwatch', false));
}
Expand Down Expand Up @@ -938,7 +935,7 @@ private function registerSessionConfiguration(array $config, ContainerBuilder $c
$loader->load('session.php');

// session storage
$container->setAlias('session.storage', $config['storage_id'])->setPrivate(true);
$container->setAlias('session.storage', $config['storage_id']);
$options = ['cache_limiter' => '0'];
foreach (['name', 'cookie_lifetime', 'cookie_path', 'cookie_domain', 'cookie_secure', 'cookie_httponly', 'cookie_samesite', 'use_cookies', 'gc_maxlifetime', 'gc_probability', 'gc_divisor', 'sid_length', 'sid_bits_per_character'] as $key) {
if (isset($config[$key])) {
Expand Down Expand Up @@ -970,9 +967,9 @@ private function registerSessionConfiguration(array $config, ContainerBuilder $c
$container->getDefinition('session.abstract_handler')
->replaceArgument(0, $container->hasDefinition($id) ? new Reference($id) : $config['handler_id']);

$container->setAlias('session.handler', 'session.abstract_handler')->setPrivate(true);
$container->setAlias('session.handler', 'session.abstract_handler');
} else {
$container->setAlias('session.handler', $config['handler_id'])->setPrivate(true);
$container->setAlias('session.handler', $config['handler_id']);
}
}

Expand Down Expand Up @@ -1375,7 +1372,7 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
->addTag('annotations.cached_reader')
;

$container->setAlias('annotation_reader', 'annotations.cached_reader')->setPrivate(true);
$container->setAlias('annotation_reader', 'annotations.cached_reader');
$container->setAlias(Reader::class, new Alias('annotations.cached_reader', false));
} else {
$container->removeDefinition('annotations.cached_reader');
Expand Down Expand Up @@ -1559,7 +1556,6 @@ private function registerPropertyInfoConfiguration(ContainerBuilder $container,

if (interface_exists('phpDocumentor\Reflection\DocBlockFactoryInterface')) {
$definition = $container->register('property_info.php_doc_extractor', 'Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor');
$definition->setPrivate(true);
$definition->addTag('property_info.description_extractor', ['priority' => -1000]);
$definition->addTag('property_info.type_extractor', ['priority' => -1001]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public function load(array $configs, ContainerBuilder $container)
$container->setParameter('security.authentication.session_strategy.strategy', $config['session_fixation_strategy']);

if (isset($config['access_decision_manager']['service'])) {
$container->setAlias('security.access.decision_manager', $config['access_decision_manager']['service'])->setPrivate(true);
$container->setAlias('security.access.decision_manager', $config['access_decision_manager']['service']);
} else {
$container
->getDefinition('security.access.decision_manager')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public function process(ContainerBuilder $container)
}

if (1 === $found) {
$container->setAlias('twig.loader', $id)->setPrivate(true);
$container->setAlias('twig.loader', $id);
} else {
$chainLoader = $container->getDefinition('twig.loader.chain');
krsort($prioritizedLoaders);
Expand All @@ -54,7 +54,7 @@ public function process(ContainerBuilder $container)
}
}

$container->setAlias('twig.loader', 'twig.loader.chain')->setPrivate(true);
$container->setAlias('twig.loader', 'twig.loader.chain');
}
}
}
18 changes: 6 additions & 12 deletions src/Symfony/Component/DependencyInjection/Alias.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,14 @@ class Alias
{
private $id;
private $public;
private $private;
private $deprecation = [];

private static $defaultDeprecationTemplate = 'The "%alias_id%" service alias is deprecated. You should stop using it, as it will be removed in the future.';

public function __construct(string $id, bool $public = true)
public function __construct(string $id, bool $public = false)
{
$this->id = $id;
$this->public = $public;
$this->private = 2 > \func_num_args();
}

/**
Expand All @@ -47,26 +45,22 @@ public function isPublic()
public function setPublic(bool $boolean)
{
$this->public = $boolean;
$this->private = false;

return $this;
}

/**
* Sets if this Alias is private.
*
* When set, the "private" state has a higher precedence than "public".
* In version 3.4, a "private" alias always remains publicly accessible,
* but triggers a deprecation notice when accessed from the container,
* so that the alias can be made really private in 4.0.
*
* @return $this
*
* @deprecated since Symfony 5.2, use setPublic() instead
*/
public function setPrivate(bool $boolean)
{
$this->private = $boolean;
trigger_deprecation('symfony/dependency-injection', '5.2', 'The "%s()" method is deprecated, use "setPublic()" instead.', __METHOD__);

return $this;
return $this->setPublic(!$boolean);
}

/**
Expand All @@ -76,7 +70,7 @@ public function setPrivate(bool $boolean)
*/
public function isPrivate()
{
return $this->private;
return !$this->public;
}

/**
Expand Down
1 change: 1 addition & 0 deletions src/Symfony/Component/DependencyInjection/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ CHANGELOG
-----

* added `param()` and `abstract_arg()` in the PHP-DSL
* deprecated `Definition::setPrivate()` and `Alias::setPrivate()`, use `setPublic()` instead

5.1.0
-----
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ class ChildDefinition extends Definition
public function __construct(string $parent)
{
$this->parent = $parent;
$this->setPrivate(false);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public function process(ContainerBuilder $container)
$decoratingDefinitions[$inner] = $definition;
}

$container->setAlias($inner, $id)->setPublic($public)->setPrivate($private);
$container->setAlias($inner, $id)->setPublic($public);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,6 @@ public function __construct()
new CheckArgumentsValidityPass(false),
]];

$this->beforeRemovingPasses = [
-100 => [
new ResolvePrivatesPass(),
],
];

$this->removingPasses = [[
new RemovePrivateAliasesPass(),
new ReplaceAliasByActualDefinitionPass(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public function process(ContainerBuilder $container)
}
// Check if target needs to be replaces
if (isset($replacements[$targetId])) {
$container->setAlias($definitionId, $replacements[$targetId])->setPublic($target->isPublic())->setPrivate($target->isPrivate());
$container->setAlias($definitionId, $replacements[$targetId])->setPublic($target->isPublic());
}
// No need to process the same target twice
if (isset($seenAliasTargets[$targetId])) {
Expand All @@ -65,8 +65,7 @@ public function process(ContainerBuilder $container)
continue;
}
// Remove private definition and schedule for replacement
$definition->setPublic(!$target->isPrivate());
$definition->setPrivate($target->isPrivate());
$definition->setPublic($target->isPublic());
$container->setDefinition($definitionId, $definition);
$container->removeDefinition($targetId);
$replacements[$targetId] = $definitionId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ private function doResolveDefinition(ChildDefinition $definition): Definition
if (isset($changes['public'])) {
$def->setPublic($definition->isPublic());
} else {
$def->setPrivate($definition->isPrivate() || $parentDef->isPrivate());
$def->setPublic($parentDef->isPublic());
}
if (isset($changes['lazy'])) {
$def->setLazy($definition->isLazy());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@

namespace Symfony\Component\DependencyInjection\Compiler;

trigger_deprecation('symfony/dependency-injection', '5.2', 'The "%s" class is deprecated.', ResolvePrivatesPass::class);

use Symfony\Component\DependencyInjection\ContainerBuilder;

/**
* @author Nicolas Grekas <p@tchwork.com>
*
* @deprecated since Symfony 5.2
*/
class ResolvePrivatesPass implements CompilerPassInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function process(ContainerBuilder $container)
$this->currentId = $id;

if ($aliasId !== $defId = $this->getDefinitionId($aliasId, $container)) {
$container->setAlias($id, $defId)->setPublic($alias->isPublic())->setPrivate($alias->isPrivate());
$container->setAlias($id, $defId)->setPublic($alias->isPublic());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ public static function register(ContainerBuilder $container, array $refMap, stri

$locator = (new Definition(ServiceLocator::class))
->addArgument($refMap)
->setPublic(false)
->addTag('container.service_locator');

if (null !== $callerId && $container->hasDefinition($callerId)) {
Expand All @@ -123,7 +122,6 @@ public static function register(ContainerBuilder $container, array $refMap, stri
// to have them specialized per consumer service, we use a cloning factory
// to derivate customized instances from the prototype one.
$container->register($id .= '.'.$callerId, ServiceLocator::class)
->setPublic(false)
->setFactory([new Reference($locatorId), 'withContext'])
->addTag('container.service_locator_context', ['id' => $callerId])
->addArgument($callerId)
Expand Down
21 changes: 10 additions & 11 deletions src/Symfony/Component/DependencyInjection/Definition.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ class Definition
private $autoconfigured = false;
private $configurator;
private $tags = [];
private $public = true;
private $private = true;
private $public = false;
private $synthetic = false;
private $abstract = false;
private $lazy = false;
Expand Down Expand Up @@ -586,7 +585,6 @@ public function setPublic(bool $boolean)
$this->changes['public'] = true;

$this->public = $boolean;
$this->private = false;

return $this;
}
Expand All @@ -604,18 +602,15 @@ public function isPublic()
/**
* Sets if this service is private.
*
* When set, the "private" state has a higher precedence than "public".
* In version 3.4, a "private" service always remains publicly accessible,
* but triggers a deprecation notice when accessed from the container,
* so that the service can be made really private in 4.0.
*
* @return $this
*
* @deprecated since Symfony 5.2, use setPublic() instead
*/
public function setPrivate(bool $boolean)
{
$this->private = $boolean;
trigger_deprecation('symfony/dependency-injection', '5.2', 'The "%s()" method is deprecated, use "setPublic()" instead.', __METHOD__);

return $this;
return $this->setPublic(!$boolean);
}

/**
Expand All @@ -625,7 +620,7 @@ public function setPrivate(bool $boolean)
*/
public function isPrivate()
{
return $this->private;
return !$this->public;
}

/**
Expand Down Expand Up @@ -662,6 +657,10 @@ public function setSynthetic(bool $boolean)
{
$this->synthetic = $boolean;

if (!isset($this->changes['public'])) {
$this->setPublic(true);
}

return $this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ private function addService(Definition $definition, ?string $id, \DOMElement $pa
if (!$definition->isShared()) {
$service->setAttribute('shared', 'false');
}
if (!$definition->isPrivate()) {
$service->setAttribute('public', $definition->isPublic() ? 'true' : 'false');
if ($definition->isPublic()) {
$service->setAttribute('public', 'true');
}
if ($definition->isSynthetic()) {
$service->setAttribute('synthetic', 'true');
Expand Down Expand Up @@ -227,8 +227,8 @@ private function addServiceAlias(string $alias, Alias $id, \DOMElement $parent)
$service = $this->document->createElement('service');
$service->setAttribute('id', $alias);
$service->setAttribute('alias', $id);
if (!$id->isPrivate()) {
$service->setAttribute('public', $id->isPublic() ? 'true' : 'false');
if ($id->isPublic()) {
$service->setAttribute('public', 'true');
}

if ($id->isDeprecated()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ private function addServiceAlias(string $alias, Alias $id): string
return sprintf(" %s: '@%s'\n", $alias, $id);
}

return sprintf(" %s:\n alias: %s\n public: %s\n%s", $alias, $id, $id->isPublic() ? 'true' : 'false', $deprecated);
if ($id->isPublic()) {
$deprecated = " public: true\n".$deprecated;
}

return sprintf(" %s:\n alias: %s\n%s", $alias, $id, $deprecated);
}

private function addServices(): string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ final public function set(?string $id, string $class = null): ServiceConfigurato
}

$id = sprintf('.%d_%s', ++$this->anonymousCount, preg_replace('/^.*\\\\/', '', $class).'~'.$this->anonymousHash);
$definition->setPublic(false);
} elseif (!$defaults->isPublic() || !$defaults->isPrivate()) {
$definition->setPublic($defaults->isPublic() && !$defaults->isPrivate());
}
Expand Down
Loading