From 069da202f972cd04c8a460c48babc50c009e41be Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Thu, 1 Jul 2021 13:43:27 +0200 Subject: [PATCH] [DependencyInjection] Add types to private properties --- .../Component/DependencyInjection/Alias.php | 6 +- .../Argument/AbstractArgument.php | 4 +- .../Argument/BoundArgument.php | 12 ++-- .../Argument/ReferenceSetArgumentTrait.php | 2 +- .../Argument/RewindableGenerator.php | 8 +-- .../Argument/ServiceClosureArgument.php | 2 +- .../Argument/ServiceLocator.php | 6 +- .../Argument/ServiceLocatorArgument.php | 2 +- .../Argument/TaggedIteratorArgument.php | 10 +-- .../DependencyInjection/ChildDefinition.php | 2 +- .../Compiler/AbstractRecursivePass.php | 8 +-- .../AliasDeprecatedPublicServicesPass.php | 21 ++---- .../Compiler/AnalyzeServiceReferencesPass.php | 18 ++--- .../Compiler/AutowirePass.php | 26 +++---- .../Compiler/CheckArgumentsValidityPass.php | 2 +- .../Compiler/CheckCircularReferencesPass.php | 4 +- ...xceptionOnInvalidReferenceBehaviorPass.php | 2 +- .../Compiler/CheckTypeDeclarationsPass.php | 12 ++-- .../DependencyInjection/Compiler/Compiler.php | 6 +- .../Compiler/DecoratorServicePass.php | 13 +--- .../Compiler/InlineServiceDefinitionsPass.php | 14 ++-- .../MergeExtensionConfigurationPass.php | 8 +-- .../Compiler/PassConfig.php | 12 ++-- .../Compiler/RegisterReverseContainerPass.php | 20 ++---- .../Compiler/RemoveUnusedDefinitionsPass.php | 2 +- .../ReplaceAliasByActualDefinitionPass.php | 2 +- .../Compiler/ResolveBindingsPass.php | 6 +- .../Compiler/ResolveChildDefinitionsPass.php | 2 +- .../Compiler/ResolveDecoratorStackPass.php | 15 +--- .../Compiler/ResolveHotPathPass.php | 22 ++---- .../Compiler/ResolveInvalidReferencesPass.php | 8 +-- .../Compiler/ResolveNoPreloadPass.php | 16 +---- .../ResolveParameterPlaceHoldersPass.php | 5 +- .../ResolveServiceSubscribersPass.php | 2 +- .../Compiler/ServiceReferenceGraph.php | 2 +- .../Compiler/ServiceReferenceGraphEdge.php | 12 ++-- .../Compiler/ServiceReferenceGraphNode.php | 8 +-- .../Compiler/ValidateEnvPlaceholdersPass.php | 2 +- .../Config/ContainerParametersResource.php | 2 +- .../ContainerParametersResourceChecker.php | 3 +- .../DependencyInjection/Container.php | 12 ++-- .../DependencyInjection/ContainerBuilder.php | 65 +++++++----------- .../DependencyInjection/Definition.php | 40 +++++------ .../Dumper/GraphvizDumper.php | 6 +- .../DependencyInjection/Dumper/PhpDumper.php | 68 ++++++++----------- .../DependencyInjection/Dumper/XmlDumper.php | 7 +- .../DependencyInjection/Dumper/YamlDumper.php | 8 +-- .../DependencyInjection/EnvVarProcessor.php | 6 +- .../Exception/AutowiringFailedException.php | 8 +-- .../ParameterCircularReferenceException.php | 2 +- .../Exception/ParameterNotFoundException.php | 10 +-- .../ServiceCircularReferenceException.php | 4 +- .../Exception/ServiceNotFoundException.php | 6 +- .../ExpressionLanguageProvider.php | 6 +- .../Extension/Extension.php | 2 +- .../Loader/ClosureLoader.php | 2 +- .../AbstractServiceConfigurator.php | 2 +- .../Configurator/ContainerConfigurator.php | 14 ++-- .../Configurator/DefaultsConfigurator.php | 2 +- .../Loader/Configurator/EnvConfigurator.php | 2 +- .../InlineServiceConfigurator.php | 6 +- .../Configurator/InstanceofConfigurator.php | 2 +- .../Configurator/ParametersConfigurator.php | 2 +- .../Configurator/PrototypeConfigurator.php | 12 ++-- .../Configurator/ServiceConfigurator.php | 10 +-- .../Configurator/ServicesConfigurator.php | 14 ++-- .../Loader/PhpFileLoader.php | 2 +- .../Loader/YamlFileLoader.php | 10 ++- .../DependencyInjection/Parameter.php | 2 +- .../ParameterBag/ContainerBag.php | 2 +- .../EnvPlaceholderParameterBag.php | 12 ++-- .../DependencyInjection/Reference.php | 4 +- .../DependencyInjection/ReverseContainer.php | 8 +-- .../DependencyInjection/ServiceLocator.php | 4 +- .../DependencyInjection/TypedReference.php | 4 +- .../DependencyInjection/Variable.php | 2 +- 76 files changed, 297 insertions(+), 400 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Alias.php b/src/Symfony/Component/DependencyInjection/Alias.php index d8f5176c8b0f3..6487331734b0e 100644 --- a/src/Symfony/Component/DependencyInjection/Alias.php +++ b/src/Symfony/Component/DependencyInjection/Alias.php @@ -17,9 +17,9 @@ class Alias { private const DEFAULT_DEPRECATION_TEMPLATE = 'The "%alias_id%" service alias is deprecated. You should stop using it, as it will be removed in the future.'; - private $id; - private $public; - private $deprecation = []; + private string $id; + private bool $public; + private array $deprecation = []; public function __construct(string $id, bool $public = false) { diff --git a/src/Symfony/Component/DependencyInjection/Argument/AbstractArgument.php b/src/Symfony/Component/DependencyInjection/Argument/AbstractArgument.php index 3ba5ff33badaa..b04f9b848ce67 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/AbstractArgument.php +++ b/src/Symfony/Component/DependencyInjection/Argument/AbstractArgument.php @@ -16,8 +16,8 @@ */ final class AbstractArgument { - private $text; - private $context; + private string $text; + private string $context = ''; public function __construct(string $text = '') { diff --git a/src/Symfony/Component/DependencyInjection/Argument/BoundArgument.php b/src/Symfony/Component/DependencyInjection/Argument/BoundArgument.php index 3efe3bc3d814e..4f109fea12323 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/BoundArgument.php +++ b/src/Symfony/Component/DependencyInjection/Argument/BoundArgument.php @@ -20,13 +20,13 @@ final class BoundArgument implements ArgumentInterface public const DEFAULTS_BINDING = 1; public const INSTANCEOF_BINDING = 2; - private static $sequence = 0; + private static int $sequence = 0; - private $value; - private $identifier; - private $used; - private $type; - private $file; + private mixed $value; + private ?int $identifier = null; + private ?bool $used = null; + private int $type; + private ?string $file; public function __construct(mixed $value, bool $trackUsage = true, int $type = 0, string $file = null) { diff --git a/src/Symfony/Component/DependencyInjection/Argument/ReferenceSetArgumentTrait.php b/src/Symfony/Component/DependencyInjection/Argument/ReferenceSetArgumentTrait.php index 777e405669b32..f542d81c4d145 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/ReferenceSetArgumentTrait.php +++ b/src/Symfony/Component/DependencyInjection/Argument/ReferenceSetArgumentTrait.php @@ -20,7 +20,7 @@ */ trait ReferenceSetArgumentTrait { - private $values; + private array $values; /** * @param Reference[] $values diff --git a/src/Symfony/Component/DependencyInjection/Argument/RewindableGenerator.php b/src/Symfony/Component/DependencyInjection/Argument/RewindableGenerator.php index 85574d452368e..758c0455d513b 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/RewindableGenerator.php +++ b/src/Symfony/Component/DependencyInjection/Argument/RewindableGenerator.php @@ -16,13 +16,13 @@ */ class RewindableGenerator implements \IteratorAggregate, \Countable { - private $generator; - private $count; + private \Closure $generator; + private \Closure|int $count; public function __construct(callable $generator, int|callable $count) { - $this->generator = $generator; - $this->count = $count; + $this->generator = $generator instanceof \Closure ? $generator : \Closure::fromCallable($generator); + $this->count = is_callable($count) && !$count instanceof \Closure ? \Closure::fromCallable($count) : $count; } public function getIterator(): \Traversable diff --git a/src/Symfony/Component/DependencyInjection/Argument/ServiceClosureArgument.php b/src/Symfony/Component/DependencyInjection/Argument/ServiceClosureArgument.php index 6331affa48387..64b3f95d15df7 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/ServiceClosureArgument.php +++ b/src/Symfony/Component/DependencyInjection/Argument/ServiceClosureArgument.php @@ -21,7 +21,7 @@ */ class ServiceClosureArgument implements ArgumentInterface { - private $values; + private array $values; public function __construct(Reference $reference) { diff --git a/src/Symfony/Component/DependencyInjection/Argument/ServiceLocator.php b/src/Symfony/Component/DependencyInjection/Argument/ServiceLocator.php index bc138fe239fd3..51613cc762946 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/ServiceLocator.php +++ b/src/Symfony/Component/DependencyInjection/Argument/ServiceLocator.php @@ -20,9 +20,9 @@ */ class ServiceLocator extends BaseServiceLocator { - private $factory; - private $serviceMap; - private $serviceTypes; + private \Closure $factory; + private array $serviceMap; + private ?array $serviceTypes; public function __construct(\Closure $factory, array $serviceMap, array $serviceTypes = null) { diff --git a/src/Symfony/Component/DependencyInjection/Argument/ServiceLocatorArgument.php b/src/Symfony/Component/DependencyInjection/Argument/ServiceLocatorArgument.php index 9e7ff72b91432..afac026d52e72 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/ServiceLocatorArgument.php +++ b/src/Symfony/Component/DependencyInjection/Argument/ServiceLocatorArgument.php @@ -22,7 +22,7 @@ class ServiceLocatorArgument implements ArgumentInterface { use ReferenceSetArgumentTrait; - private $taggedIteratorArgument; + private ?TaggedIteratorArgument $taggedIteratorArgument = null; /** * @param Reference[]|TaggedIteratorArgument $values diff --git a/src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php b/src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php index 1ba8de790b69e..b81e3a3a7f93a 100644 --- a/src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php +++ b/src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php @@ -18,11 +18,11 @@ */ class TaggedIteratorArgument extends IteratorArgument { - private $tag; - private $indexAttribute; - private $defaultIndexMethod; - private $defaultPriorityMethod; - private $needsIndexes = false; + private string $tag; + private mixed $indexAttribute; + private ?string $defaultIndexMethod; + private ?string $defaultPriorityMethod; + private bool $needsIndexes; /** * @param string $tag The name of the tag identifying the target services diff --git a/src/Symfony/Component/DependencyInjection/ChildDefinition.php b/src/Symfony/Component/DependencyInjection/ChildDefinition.php index 8a3cba04d7873..52d30203e028f 100644 --- a/src/Symfony/Component/DependencyInjection/ChildDefinition.php +++ b/src/Symfony/Component/DependencyInjection/ChildDefinition.php @@ -21,7 +21,7 @@ */ class ChildDefinition extends Definition { - private $parent; + private string $parent; /** * @param string $parent The id of Definition instance to decorate diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php b/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php index 5d9e70c8082a5..f769b6fcc859d 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php @@ -31,9 +31,9 @@ abstract class AbstractRecursivePass implements CompilerPassInterface protected $container; protected $currentId; - private $processExpressions = false; - private $expressionLanguage; - private $inExpression = false; + private bool $processExpressions = false; + private ExpressionLanguage $expressionLanguage; + private bool $inExpression = false; /** * {@inheritdoc} @@ -194,7 +194,7 @@ protected function getReflectionMethod(Definition $definition, string $method) private function getExpressionLanguage(): ExpressionLanguage { - if (null === $this->expressionLanguage) { + if (!isset($this->expressionLanguage)) { if (!class_exists(ExpressionLanguage::class)) { throw new LogicException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed. Try running "composer require symfony/expression-language".'); } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AliasDeprecatedPublicServicesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/AliasDeprecatedPublicServicesPass.php index c0f0801351b72..be2c275e8056b 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/AliasDeprecatedPublicServicesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AliasDeprecatedPublicServicesPass.php @@ -17,18 +17,7 @@ final class AliasDeprecatedPublicServicesPass extends AbstractRecursivePass { - private $tagName; - - private $aliases = []; - - public function __construct(string $tagName = 'container.private') - { - if (0 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - - $this->tagName = $tagName; - } + private array $aliases = []; /** * {@inheritdoc} @@ -47,13 +36,13 @@ protected function processValue(mixed $value, bool $isRoot = false) */ public function process(ContainerBuilder $container) { - foreach ($container->findTaggedServiceIds($this->tagName) as $id => $tags) { + foreach ($container->findTaggedServiceIds('container.private') as $id => $tags) { if (null === $package = $tags[0]['package'] ?? null) { - throw new InvalidArgumentException(sprintf('The "package" attribute is mandatory for the "%s" tag on the "%s" service.', $this->tagName, $id)); + throw new InvalidArgumentException(sprintf('The "package" attribute is mandatory for the "container.private" tag on the "%s" service.', $id)); } if (null === $version = $tags[0]['version'] ?? null) { - throw new InvalidArgumentException(sprintf('The "version" attribute is mandatory for the "%s" tag on the "%s" service.', $this->tagName, $id)); + throw new InvalidArgumentException(sprintf('The "version" attribute is mandatory for the "container.private" tag on the "%s" service.', $id)); } $definition = $container->getDefinition($id); @@ -62,7 +51,7 @@ public function process(ContainerBuilder $container) } $container - ->setAlias($id, $aliasId = '.'.$this->tagName.'.'.$id) + ->setAlias($id, $aliasId = '.container.private.'.$id) ->setPublic(true) ->setDeprecated($package, $version, 'Accessing the "%alias_id%" service directly from the container is deprecated, use dependency injection instead.'); diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php index a9ac45aae0ef5..67327ec740bfb 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php @@ -30,15 +30,15 @@ */ class AnalyzeServiceReferencesPass extends AbstractRecursivePass { - private $graph; - private $currentDefinition; - private $onlyConstructorArguments; - private $hasProxyDumper; - private $lazy; - private $byConstructor; - private $byFactory; - private $definitions; - private $aliases; + private ServiceReferenceGraph $graph; + private ?Definition $currentDefinition = null; + private bool $onlyConstructorArguments; + private bool $hasProxyDumper; + private bool $lazy; + private bool $byConstructor; + private bool $byFactory; + private array $definitions; + private array $aliases; /** * @param bool $onlyConstructorArguments Sets this Service Reference pass to ignore method calls diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php b/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php index 13da6591551b8..8ce7c6a1cfd81 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php @@ -32,18 +32,18 @@ */ class AutowirePass extends AbstractRecursivePass { - private $types; - private $ambiguousServiceTypes; - private $autowiringAliases; - private $lastFailure; - private $throwOnAutowiringException; - private $decoratedClass; - private $decoratedId; - private $methodCalls; - private $getPreviousValue; - private $decoratedMethodIndex; - private $decoratedMethodArgumentIndex; - private $typesClone; + private array $types; + private array $ambiguousServiceTypes; + private array $autowiringAliases; + private ?string $lastFailure = null; + private bool $throwOnAutowiringException; + private ?string $decoratedClass = null; + private ?string $decoratedId = null; + private ?array $methodCalls = null; + private ?\Closure $getPreviousValue = null; + private ?int $decoratedMethodIndex = null; + private ?int $decoratedMethodArgumentIndex = null; + private ?self $typesClone = null; public function __construct(bool $throwOnAutowireException = true) { @@ -460,7 +460,7 @@ private function createTypeAlternatives(ContainerBuilder $container, TypedRefere if ($message = $this->getAliasesSuggestionForType($container, $type = $reference->getType())) { return ' '.$message; } - if (null === $this->ambiguousServiceTypes) { + if (!isset($this->ambiguousServiceTypes)) { $this->populateAvailableTypes($container); } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckArgumentsValidityPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckArgumentsValidityPass.php index 60f0c3aa509f8..26a0272b68a76 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/CheckArgumentsValidityPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckArgumentsValidityPass.php @@ -22,7 +22,7 @@ */ class CheckArgumentsValidityPass extends AbstractRecursivePass { - private $throwExceptions; + private bool $throwExceptions; public function __construct(bool $throwExceptions = true) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php index 55d911c4f3e60..6173688ca0dd7 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php @@ -26,8 +26,8 @@ */ class CheckCircularReferencesPass implements CompilerPassInterface { - private $currentPath; - private $checkedNodes; + private array $currentPath; + private array $checkedNodes; /** * Checks the ContainerBuilder object for circular references. diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php index 23928ed8991eb..eb4af610b165c 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php @@ -23,7 +23,7 @@ */ class CheckExceptionOnInvalidReferenceBehaviorPass extends AbstractRecursivePass { - private $serviceLocatorContextIds = []; + private array $serviceLocatorContextIds = []; /** * {@inheritdoc} diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php index f1a3e2f90d650..86422a0c0b59f 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php @@ -59,10 +59,10 @@ final class CheckTypeDeclarationsPass extends AbstractRecursivePass 'string' => true, ]; - private $autoload; - private $skippedIds; + private bool $autoload; + private array $skippedIds; - private $expressionLanguage; + private ExpressionLanguage $expressionLanguage; /** * @param bool $autoload Whether services who's class in not loaded should be checked or not. @@ -309,10 +309,6 @@ private function checkType(Definition $checkedDefinition, mixed $value, \Reflect private function getExpressionLanguage(): ExpressionLanguage { - if (null === $this->expressionLanguage) { - $this->expressionLanguage = new ExpressionLanguage(null, $this->container->getExpressionLanguageProviders()); - } - - return $this->expressionLanguage; + return $this->expressionLanguage ??= new ExpressionLanguage(null, $this->container->getExpressionLanguageProviders()); } } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php b/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php index 04ae8d51cb9df..36fdb65652e40 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php @@ -21,9 +21,9 @@ */ class Compiler { - private $passConfig; - private $log = []; - private $serviceReferenceGraph; + private PassConfig $passConfig; + private array $log = []; + private ServiceReferenceGraph $serviceReferenceGraph; public function __construct() { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php b/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php index 57a137b72d1fc..bfdc4c9b48686 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php @@ -27,17 +27,6 @@ */ class DecoratorServicePass extends AbstractRecursivePass { - private $innerId = '.inner'; - - public function __construct(?string $innerId = '.inner') - { - if (0 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - - $this->innerId = $innerId; - } - public function process(ContainerBuilder $container) { $definitions = new \SplPriorityQueue(); @@ -123,7 +112,7 @@ public function process(ContainerBuilder $container) protected function processValue(mixed $value, bool $isRoot = false) { - if ($value instanceof Reference && $this->innerId === (string) $value) { + if ($value instanceof Reference && '.inner' === (string) $value) { return new Reference($this->currentId, $value->getInvalidBehavior()); } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php index b95e0386e3a0b..7a2f849e8f77c 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php @@ -24,13 +24,13 @@ */ class InlineServiceDefinitionsPass extends AbstractRecursivePass { - private $analyzingPass; - private $cloningIds = []; - private $connectedIds = []; - private $notInlinedIds = []; - private $inlinedIds = []; - private $notInlinableIds = []; - private $graph; + private ?AnalyzeServiceReferencesPass $analyzingPass; + private array $cloningIds = []; + private array $connectedIds = []; + private array $notInlinedIds = []; + private array $inlinedIds = []; + private array $notInlinableIds = []; + private ?ServiceReferenceGraph $graph = null; public function __construct(AnalyzeServiceReferencesPass $analyzingPass = null) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php b/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php index 705f38d6aa3bd..775cca154e56f 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php @@ -109,7 +109,7 @@ public function process(ContainerBuilder $container) */ class MergeExtensionConfigurationParameterBag extends EnvPlaceholderParameterBag { - private $processedEnvPlaceholders; + private array $processedEnvPlaceholders; public function __construct(parent $parameterBag) { @@ -143,12 +143,12 @@ public function freezeAfterProcessing(Extension $extension, ContainerBuilder $co */ public function getEnvPlaceholders(): array { - return null !== $this->processedEnvPlaceholders ? $this->processedEnvPlaceholders : parent::getEnvPlaceholders(); + return $this->processedEnvPlaceholders ?? parent::getEnvPlaceholders(); } public function getUnusedEnvPlaceholders(): array { - return null === $this->processedEnvPlaceholders ? [] : array_diff_key(parent::getEnvPlaceholders(), $this->processedEnvPlaceholders); + return !isset($this->processedEnvPlaceholders) ? [] : array_diff_key(parent::getEnvPlaceholders(), $this->processedEnvPlaceholders); } } @@ -159,7 +159,7 @@ public function getUnusedEnvPlaceholders(): array */ class MergeExtensionConfigurationContainerBuilder extends ContainerBuilder { - private $extensionClass; + private string $extensionClass; public function __construct(ExtensionInterface $extension, ParameterBagInterface $parameterBag = null) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php index 12d3b26f740df..d8e252abcda90 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php @@ -28,12 +28,12 @@ class PassConfig public const TYPE_OPTIMIZE = 'optimization'; public const TYPE_REMOVE = 'removing'; - private $mergePass; - private $afterRemovingPasses = []; - private $beforeOptimizationPasses = []; - private $beforeRemovingPasses = []; - private $optimizationPasses; - private $removingPasses; + private MergeExtensionConfigurationPass $mergePass; + private array $afterRemovingPasses; + private array $beforeOptimizationPasses; + private array $beforeRemovingPasses = []; + private array $optimizationPasses; + private array $removingPasses; public function __construct() { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RegisterReverseContainerPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RegisterReverseContainerPass.php index c5eb9bf08b630..8f07c4b53d513 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/RegisterReverseContainerPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/RegisterReverseContainerPass.php @@ -22,38 +22,30 @@ */ class RegisterReverseContainerPass implements CompilerPassInterface { - private $beforeRemoving; - private $serviceId; - private $tagName; + private bool $beforeRemoving; - public function __construct(bool $beforeRemoving, string $serviceId = 'reverse_container', string $tagName = 'container.reversible') + public function __construct(bool $beforeRemoving) { - if (1 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - $this->beforeRemoving = $beforeRemoving; - $this->serviceId = $serviceId; - $this->tagName = $tagName; } public function process(ContainerBuilder $container) { - if (!$container->hasDefinition($this->serviceId)) { + if (!$container->hasDefinition('reverse_container')) { return; } $refType = $this->beforeRemoving ? ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE : ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE; $services = []; - foreach ($container->findTaggedServiceIds($this->tagName) as $id => $tags) { + foreach ($container->findTaggedServiceIds('container.reversible') as $id => $tags) { $services[$id] = new Reference($id, $refType); } if ($this->beforeRemoving) { // prevent inlining of the reverse container - $services[$this->serviceId] = new Reference($this->serviceId, $refType); + $services['reverse_container'] = new Reference('reverse_container', $refType); } - $locator = $container->getDefinition($this->serviceId)->getArgument(1); + $locator = $container->getDefinition('reverse_container')->getArgument(1); if ($locator instanceof Reference) { $locator = $container->getDefinition((string) $locator); diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php index b49250a854438..f2b3869b05cf2 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php @@ -22,7 +22,7 @@ */ class RemoveUnusedDefinitionsPass extends AbstractRecursivePass { - private $connectedIds = []; + private array $connectedIds = []; /** * Processes the ContainerBuilder to remove unused definitions. diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php index 2e339e74f2257..d59a5d84f9d62 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php @@ -24,7 +24,7 @@ */ class ReplaceAliasByActualDefinitionPass extends AbstractRecursivePass { - private $replacements; + private array $replacements; /** * Process the Container to replace aliases with service definitions. diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveBindingsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveBindingsPass.php index 3e6cbbaf6861b..51dd7935771b2 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveBindingsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveBindingsPass.php @@ -28,9 +28,9 @@ */ class ResolveBindingsPass extends AbstractRecursivePass { - private $usedBindings = []; - private $unusedBindings = []; - private $errorMessages = []; + private array $usedBindings = []; + private array $unusedBindings = []; + private array $errorMessages = []; /** * {@inheritdoc} diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveChildDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveChildDefinitionsPass.php index 788997fcf1aba..c03b9817a5db4 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveChildDefinitionsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveChildDefinitionsPass.php @@ -27,7 +27,7 @@ */ class ResolveChildDefinitionsPass extends AbstractRecursivePass { - private $currentPath; + private array $currentPath; protected function processValue(mixed $value, bool $isRoot = false) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveDecoratorStackPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveDecoratorStackPass.php index 4914b3ac9dc74..48def28009d16 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveDecoratorStackPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveDecoratorStackPass.php @@ -24,26 +24,15 @@ */ class ResolveDecoratorStackPass implements CompilerPassInterface { - private $tag; - - public function __construct(string $tag = 'container.stack') - { - if (0 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - - $this->tag = $tag; - } - public function process(ContainerBuilder $container) { $stacks = []; - foreach ($container->findTaggedServiceIds($this->tag) as $id => $tags) { + foreach ($container->findTaggedServiceIds('container.stack') as $id => $tags) { $definition = $container->getDefinition($id); if (!$definition instanceof ChildDefinition) { - throw new InvalidArgumentException(sprintf('Invalid service "%s": only definitions with a "parent" can have the "%s" tag.', $id, $this->tag)); + throw new InvalidArgumentException(sprintf('Invalid service "%s": only definitions with a "parent" can have the "container.stack" tag.', $id)); } if (!$stack = $definition->getArguments()) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveHotPathPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveHotPathPass.php index ccbf0e41499ec..8c20ac468ed4a 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveHotPathPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveHotPathPass.php @@ -23,17 +23,7 @@ */ class ResolveHotPathPass extends AbstractRecursivePass { - private $tagName; - private $resolvedIds = []; - - public function __construct(string $tagName = 'container.hot_path') - { - if (0 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - - $this->tagName = $tagName; - } + private array $resolvedIds = []; /** * {@inheritdoc} @@ -42,7 +32,7 @@ public function process(ContainerBuilder $container) { try { parent::process($container); - $container->getDefinition('service_container')->clearTag($this->tagName); + $container->getDefinition('service_container')->clearTag('container.hot_path'); } finally { $this->resolvedIds = []; } @@ -59,12 +49,12 @@ protected function processValue(mixed $value, bool $isRoot = false) if ($value instanceof Definition && $isRoot) { if ($value->isDeprecated()) { - return $value->clearTag($this->tagName); + return $value->clearTag('container.hot_path'); } $this->resolvedIds[$this->currentId] = true; - if (!$value->hasTag($this->tagName)) { + if (!$value->hasTag('container.hot_path')) { return $value; } } @@ -72,11 +62,11 @@ protected function processValue(mixed $value, bool $isRoot = false) if ($value instanceof Reference && ContainerBuilder::IGNORE_ON_UNINITIALIZED_REFERENCE !== $value->getInvalidBehavior() && $this->container->hasDefinition($id = (string) $value)) { $definition = $this->container->getDefinition($id); - if ($definition->isDeprecated() || $definition->hasTag($this->tagName)) { + if ($definition->isDeprecated() || $definition->hasTag('container.hot_path')) { return $value; } - $definition->addTag($this->tagName); + $definition->addTag('container.hot_path'); if (isset($this->resolvedIds[$id])) { parent::processValue($definition, false); diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php index 4ff9e084dcaf7..d1bc44c99d278 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php @@ -29,9 +29,9 @@ */ class ResolveInvalidReferencesPass implements CompilerPassInterface { - private $container; - private $signalingException; - private $currentId; + private ContainerBuilder $container; + private RuntimeException $signalingException; + private string $currentId; /** * Process the ContainerBuilder to resolve invalid references. @@ -46,7 +46,7 @@ public function process(ContainerBuilder $container) $this->processValue($definition); } } finally { - $this->container = $this->signalingException = null; + unset($this->container, $this->signalingException); } } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveNoPreloadPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveNoPreloadPass.php index 2b6e7427ae9a7..6c71d9087abd0 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveNoPreloadPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveNoPreloadPass.php @@ -24,17 +24,7 @@ class ResolveNoPreloadPass extends AbstractRecursivePass { private const DO_PRELOAD_TAG = '.container.do_preload'; - private $tagName; - private $resolvedIds = []; - - public function __construct(string $tagName = 'container.no_preload') - { - if (0 < \func_num_args()) { - trigger_deprecation('symfony/dependency-injection', '5.3', 'Configuring "%s" is deprecated.', __CLASS__); - } - - $this->tagName = $tagName; - } + private array $resolvedIds = []; /** * {@inheritdoc} @@ -66,7 +56,7 @@ public function process(ContainerBuilder $container) if ($definition->hasTag(self::DO_PRELOAD_TAG)) { $definition->clearTag(self::DO_PRELOAD_TAG); } elseif (!$definition->isDeprecated() && !$definition->hasErrors()) { - $definition->addTag($this->tagName); + $definition->addTag('container.no_preload'); } } } @@ -91,7 +81,7 @@ protected function processValue(mixed $value, bool $isRoot = false) return parent::processValue($value, $isRoot); } - if ($value->hasTag($this->tagName) || $value->isDeprecated() || $value->hasErrors()) { + if ($value->hasTag('container.no_preload') || $value->isDeprecated() || $value->hasErrors()) { return $value; } diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php index 7816761993eb4..688cc5da80dc4 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php @@ -14,6 +14,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; /** * Resolves all parameter placeholders "%somevalue%" to their real values. @@ -22,7 +23,7 @@ */ class ResolveParameterPlaceHoldersPass extends AbstractRecursivePass { - private $bag; + private ParameterBagInterface $bag; public function __construct( private bool $resolveArrays = true, @@ -56,7 +57,7 @@ public function process(ContainerBuilder $container) } $this->bag->resolve(); - $this->bag = null; + unset($this->bag); } protected function processValue(mixed $value, bool $isRoot = false) diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php index 7f040bccc9f4c..1578960868ec5 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php @@ -23,7 +23,7 @@ */ class ResolveServiceSubscribersPass extends AbstractRecursivePass { - private $serviceLocator; + private ?string $serviceLocator = null; protected function processValue(mixed $value, bool $isRoot = false) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php index 1fb3aa21f09cb..28931f0b3e102 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php @@ -29,7 +29,7 @@ class ServiceReferenceGraph /** * @var ServiceReferenceGraphNode[] */ - private $nodes = []; + private array $nodes = []; public function hasNode(string $id): bool { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php index 927fea292083d..89c686da5ea5e 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php @@ -20,12 +20,12 @@ */ class ServiceReferenceGraphEdge { - private $sourceNode; - private $destNode; - private $value; - private $lazy; - private $weak; - private $byConstructor; + private ServiceReferenceGraphNode $sourceNode; + private ServiceReferenceGraphNode $destNode; + private mixed $value; + private bool $lazy; + private bool $weak; + private bool $byConstructor; public function __construct(ServiceReferenceGraphNode $sourceNode, ServiceReferenceGraphNode $destNode, mixed $value = null, bool $lazy = false, bool $weak = false, bool $byConstructor = false) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php index 15b47e94d73ed..74a93eed27f81 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php @@ -23,10 +23,10 @@ */ class ServiceReferenceGraphNode { - private $id; - private $inEdges = []; - private $outEdges = []; - private $value; + private string $id; + private array $inEdges = []; + private array $outEdges = []; + private mixed $value; public function __construct(string $id, mixed $value) { diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php index 88c7851d6f39f..1a397f209029a 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php @@ -28,7 +28,7 @@ class ValidateEnvPlaceholdersPass implements CompilerPassInterface { private const TYPE_FIXTURES = ['array' => [], 'bool' => false, 'float' => 0.0, 'int' => 0, 'string' => '']; - private $extensionConfig = []; + private array $extensionConfig = []; /** * {@inheritdoc} diff --git a/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResource.php b/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResource.php index 52b303079da1d..5377673ad9912 100644 --- a/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResource.php +++ b/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResource.php @@ -22,7 +22,7 @@ */ class ContainerParametersResource implements ResourceInterface { - private $parameters; + private array $parameters; /** * @param array $parameters The container parameters to track diff --git a/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResourceChecker.php b/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResourceChecker.php index 2f2affaa5b6c2..b6741b13a2129 100644 --- a/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResourceChecker.php +++ b/src/Symfony/Component/DependencyInjection/Config/ContainerParametersResourceChecker.php @@ -20,8 +20,7 @@ */ class ContainerParametersResourceChecker implements ResourceCheckerInterface { - /** @var ContainerInterface */ - private $container; + private ContainerInterface $container; public function __construct(ContainerInterface $container) { diff --git a/src/Symfony/Component/DependencyInjection/Container.php b/src/Symfony/Component/DependencyInjection/Container.php index 6e078469052c5..8a18259903251 100644 --- a/src/Symfony/Component/DependencyInjection/Container.php +++ b/src/Symfony/Component/DependencyInjection/Container.php @@ -58,9 +58,9 @@ class Container implements ContainerInterface, ResetInterface protected $resolving = []; protected $syntheticIds = []; - private $envCache = []; - private $compiled = false; - private $getEnv; + private array $envCache = []; + private bool $compiled = false; + private \Closure $getEnv; public function __construct(ParameterBagInterface $parameterBag = null) { @@ -371,11 +371,7 @@ protected function getEnv(string $name) if (!$this->has($id = 'container.env_var_processors_locator')) { $this->set($id, new ServiceLocator([])); } - if (!$this->getEnv) { - $this->getEnv = new \ReflectionMethod($this, __FUNCTION__); - $this->getEnv->setAccessible(true); - $this->getEnv = $this->getEnv->getClosure($this); - } + $this->getEnv ??= \Closure::fromCallable([$this, 'getEnv']); $processors = $this->get($id); if (false !== $i = strpos($name, ':')) { diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 163c074e4b58b..11ac8534f8dfe 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -57,82 +57,69 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * @var ExtensionInterface[] */ - private $extensions = []; + private array $extensions = []; /** * @var ExtensionInterface[] */ - private $extensionsByNs = []; + private array $extensionsByNs = []; /** * @var Definition[] */ - private $definitions = []; + private array $definitions = []; /** * @var Alias[] */ - private $aliasDefinitions = []; + private array $aliasDefinitions = []; /** * @var ResourceInterface[] */ - private $resources = []; + private array $resources = []; - private $extensionConfigs = []; - - /** - * @var Compiler - */ - private $compiler; - - private $trackResources; - - /** - * @var InstantiatorInterface|null - */ - private $proxyInstantiator; - - /** - * @var ExpressionLanguage|null - */ - private $expressionLanguage; + private array $extensionConfigs = []; + private Compiler $compiler; + private bool $trackResources; + private ?InstantiatorInterface $proxyInstantiator = null; + private ExpressionLanguage $expressionLanguage; /** * @var ExpressionFunctionProviderInterface[] */ - private $expressionLanguageProviders = []; + private array $expressionLanguageProviders = []; /** * @var string[] with tag names used by findTaggedServiceIds */ - private $usedTags = []; + private array $usedTags = []; /** * @var string[][] a map of env var names to their placeholders */ - private $envPlaceholders = []; + private array $envPlaceholders = []; /** * @var int[] a map of env vars to their resolution counter */ - private $envCounters = []; + private array $envCounters = []; /** * @var string[] the list of vendor directories */ - private $vendors; + private array $vendors; - private $autoconfiguredInstanceof = []; + private array $autoconfiguredInstanceof = []; /** * @var callable[] */ - private $autoconfiguredAttributes = []; + private array $autoconfiguredAttributes = []; - private $removedIds = []; + private array $removedIds = []; - private $removedBindingIds = []; + private array $removedBindingIds = []; private const INTERNAL_TYPES = [ 'int' => true, @@ -161,7 +148,7 @@ public function __construct(ParameterBagInterface $parameterBag = null) /** * @var \ReflectionClass[] a list of class reflectors */ - private $classReflectors; + private array $classReflectors; /** * Sets the track resources flag. @@ -476,11 +463,7 @@ public function getCompilerPassConfig() */ public function getCompiler() { - if (null === $this->compiler) { - $this->compiler = new Compiler(); - } - - return $this->compiler; + return $this->compiler ??= new Compiler(); } /** @@ -1611,7 +1594,7 @@ private function shareService(Definition $definition, mixed $service, ?string $i private function getExpressionLanguage(): ExpressionLanguage { - if (null === $this->expressionLanguage) { + if (!isset($this->expressionLanguage)) { if (!class_exists(\Symfony\Component\ExpressionLanguage\ExpressionLanguage::class)) { throw new LogicException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); } @@ -1623,9 +1606,7 @@ private function getExpressionLanguage(): ExpressionLanguage private function inVendors(string $path): bool { - if (null === $this->vendors) { - $this->vendors = (new ComposerResource())->getVendors(); - } + $this->vendors ??= (new ComposerResource())->getVendors(); $path = realpath($path) ?: $path; foreach ($this->vendors as $vendor) { diff --git a/src/Symfony/Component/DependencyInjection/Definition.php b/src/Symfony/Component/DependencyInjection/Definition.php index 84e361285b636..482a0e9e61e55 100644 --- a/src/Symfony/Component/DependencyInjection/Definition.php +++ b/src/Symfony/Component/DependencyInjection/Definition.php @@ -24,26 +24,26 @@ class Definition { private const DEFAULT_DEPRECATION_TEMPLATE = 'The "%service_id%" service is deprecated. You should stop using it, as it will be removed in the future.'; - private $class; - private $file; - private $factory; - private $shared = true; - private $deprecation = []; - private $properties = []; - private $calls = []; - private $instanceof = []; - private $autoconfigured = false; - private $configurator; - private $tags = []; - private $public = false; - private $synthetic = false; - private $abstract = false; - private $lazy = false; - private $decoratedService; - private $autowired = false; - private $changes = []; - private $bindings = []; - private $errors = []; + private ?string $class = null; + private ?string $file = null; + private string|array|null $factory = null; + private bool $shared = true; + private array $deprecation = []; + private array $properties = []; + private array $calls = []; + private array $instanceof = []; + private bool $autoconfigured = false; + private string|array|null $configurator = null; + private array $tags = []; + private bool $public = false; + private bool $synthetic = false; + private bool $abstract = false; + private bool $lazy = false; + private ?array $decoratedService = null; + private bool $autowired = false; + private array $changes = []; + private array $bindings = []; + private array $errors = []; protected $arguments = []; diff --git a/src/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php index 09836cd302d1f..119aec18ecaf6 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php @@ -30,10 +30,10 @@ */ class GraphvizDumper extends Dumper { - private $nodes; - private $edges; + private array $nodes; + private array $edges; // All values should be strings - private $options = [ + private array $options = [ 'graph' => ['ratio' => 'compress'], 'node' => ['fontsize' => '11', 'fontname' => 'Arial', 'shape' => 'record'], 'edge' => ['fontsize' => '9', 'fontname' => 'Arial', 'color' => 'grey', 'arrowhead' => 'open', 'arrowsize' => '0.5'], diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 3417615e4b624..54f22116a1067 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -62,38 +62,34 @@ class PhpDumper extends Dumper */ public const NON_FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789_'; - private $definitionVariables; - private $referenceVariables; - private $variableCount; - private $inlinedDefinitions; - private $serviceCalls; - private $reservedVariables = ['instance', 'class', 'this', 'container']; - private $expressionLanguage; - private $targetDirRegex; - private $targetDirMaxMatches; - private $docStar; - private $serviceIdToMethodNameMap; - private $usedMethodNames; - private $namespace; - private $asFiles; - private $hotPathTag; - private $preloadTags; - private $inlineFactories; - private $inlineRequires; - private $inlinedRequires = []; - private $circularReferences = []; - private $singleUsePrivateIds = []; - private $preload = []; - private $addGetService = false; - private $locatedIds = []; - private $serviceLocatorTag; - private $exportedVariables = []; - private $baseClass; - - /** - * @var ProxyDumper - */ - private $proxyDumper; + private ?\SplObjectStorage $definitionVariables = null; + private ?array $referenceVariables = null; + private int $variableCount; + private ?\SplObjectStorage $inlinedDefinitions = null; + private ?array $serviceCalls = null; + private array $reservedVariables = ['instance', 'class', 'this', 'container']; + private ExpressionLanguage $expressionLanguage; + private ?string $targetDirRegex = null; + private int $targetDirMaxMatches; + private string $docStar; + private array $serviceIdToMethodNameMap; + private array $usedMethodNames; + private string $namespace; + private bool $asFiles; + private string $hotPathTag; + private array $preloadTags; + private bool $inlineFactories; + private bool $inlineRequires; + private array $inlinedRequires = []; + private array $circularReferences = []; + private array $singleUsePrivateIds = []; + private array $preload = []; + private bool $addGetService = false; + private array $locatedIds = []; + private string $serviceLocatorTag; + private array $exportedVariables = []; + private string $baseClass; + private ProxyDumper $proxyDumper; /** * {@inheritdoc} @@ -402,11 +398,7 @@ class %s extends {$options['class']} */ private function getProxyDumper(): ProxyDumper { - if (!$this->proxyDumper) { - $this->proxyDumper = new NullDumper(); - } - - return $this->proxyDumper; + return $this->proxyDumper ??= new NullDumper(); } private function analyzeReferences() @@ -2032,7 +2024,7 @@ private function getNextVariableName(): string private function getExpressionLanguage(): ExpressionLanguage { - if (null === $this->expressionLanguage) { + if (!isset($this->expressionLanguage)) { if (!class_exists(\Symfony\Component\ExpressionLanguage\ExpressionLanguage::class)) { throw new LogicException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); } diff --git a/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php index 8d1f8122e0d60..90a7c8116b5bd 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php @@ -32,10 +32,7 @@ */ class XmlDumper extends Dumper { - /** - * @var \DOMDocument - */ - private $document; + private \DOMDocument $document; /** * Dumps the service container as an XML string. @@ -56,7 +53,7 @@ public function dump(array $options = []) $this->document->appendChild($container); $xml = $this->document->saveXML(); - $this->document = null; + unset($this->document); return $this->container->resolveEnvPlaceholders($xml); } diff --git a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php index 6819e3bc28759..bb85ae51a0f87 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php @@ -37,7 +37,7 @@ */ class YamlDumper extends Dumper { - private $dumper; + private YmlDumper $dumper; /** * Dumps the service container as an YAML string. @@ -46,13 +46,11 @@ class YamlDumper extends Dumper */ public function dump(array $options = []) { - if (!class_exists(\Symfony\Component\Yaml\Dumper::class)) { + if (!class_exists(YmlDumper::class)) { throw new LogicException('Unable to dump the container as the Symfony Yaml Component is not installed.'); } - if (null === $this->dumper) { - $this->dumper = new YmlDumper(); - } + $this->dumper ??= new YmlDumper(); return $this->container->resolveEnvPlaceholders($this->addParameters()."\n".$this->addServices()); } diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 57a28e89c29b4..5e40c6ec6c7ad 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -20,9 +20,9 @@ */ class EnvVarProcessor implements EnvVarProcessorInterface { - private $container; - private $loaders; - private $loadedVars = []; + private ContainerInterface $container; + private \Traversable $loaders; + private array $loadedVars = []; /** * @param EnvVarLoaderInterface[] $loaders diff --git a/src/Symfony/Component/DependencyInjection/Exception/AutowiringFailedException.php b/src/Symfony/Component/DependencyInjection/Exception/AutowiringFailedException.php index c9984791d8f25..84aece115e637 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/AutowiringFailedException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/AutowiringFailedException.php @@ -16,8 +16,8 @@ */ class AutowiringFailedException extends RuntimeException { - private $serviceId; - private $messageCallback; + private string $serviceId; + private ?\Closure $messageCallback; public function __construct(string $serviceId, string|\Closure $message = '', int $code = 0, \Throwable $previous = null) { @@ -39,8 +39,8 @@ public function __construct(string $serviceId, string|\Closure $message = '', in parent::__construct('', $code, $previous); $this->message = new class($this->message, $this->messageCallback) { - private $message; - private $messageCallback; + private string $message; + private ?\Closure $messageCallback; public function __construct(&$message, &$messageCallback) { diff --git a/src/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php b/src/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php index 2450ccb5c797f..b26335dc5d471 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php @@ -18,7 +18,7 @@ */ class ParameterCircularReferenceException extends RuntimeException { - private $parameters; + private array $parameters; public function __construct(array $parameters, \Throwable $previous = null) { diff --git a/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php b/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php index 5d38310141d1b..71c36f6866411 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php @@ -20,11 +20,11 @@ */ class ParameterNotFoundException extends InvalidArgumentException implements NotFoundExceptionInterface { - private $key; - private $sourceId; - private $sourceKey; - private $alternatives; - private $nonNestedAlternative; + private string $key; + private ?string $sourceId; + private ?string $sourceKey; + private array $alternatives; + private ?string $nonNestedAlternative; /** * @param string $key The requested parameter key diff --git a/src/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php b/src/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php index a38671bcf24bd..feff376553755 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php @@ -18,8 +18,8 @@ */ class ServiceCircularReferenceException extends RuntimeException { - private $serviceId; - private $path; + private string $serviceId; + private array $path; public function __construct(string $serviceId, array $path, \Throwable $previous = null) { diff --git a/src/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php b/src/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php index f91afae397d94..183a110eec8b6 100644 --- a/src/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php +++ b/src/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php @@ -20,9 +20,9 @@ */ class ServiceNotFoundException extends InvalidArgumentException implements NotFoundExceptionInterface { - private $id; - private $sourceId; - private $alternatives; + private string $id; + private ?string $sourceId; + private array $alternatives; public function __construct(string $id, string $sourceId = null, \Throwable $previous = null, array $alternatives = [], string $msg = null) { diff --git a/src/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php b/src/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php index 9198ca0a40a9a..6c5551b6db563 100644 --- a/src/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php +++ b/src/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php @@ -24,17 +24,17 @@ */ class ExpressionLanguageProvider implements ExpressionFunctionProviderInterface { - private $serviceCompiler; + private ?\Closure $serviceCompiler; public function __construct(callable $serviceCompiler = null) { - $this->serviceCompiler = $serviceCompiler; + $this->serviceCompiler = $serviceCompiler !== null && !$serviceCompiler instanceof \Closure ? \Closure::fromCallable($serviceCompiler) : $serviceCompiler; } public function getFunctions() { return [ - new ExpressionFunction('service', $this->serviceCompiler ?: function ($arg) { + new ExpressionFunction('service', $this->serviceCompiler ?? function ($arg) { return sprintf('$this->get(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->get($value); diff --git a/src/Symfony/Component/DependencyInjection/Extension/Extension.php b/src/Symfony/Component/DependencyInjection/Extension/Extension.php index 81070c911fab9..04910dea2eb1f 100644 --- a/src/Symfony/Component/DependencyInjection/Extension/Extension.php +++ b/src/Symfony/Component/DependencyInjection/Extension/Extension.php @@ -26,7 +26,7 @@ */ abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface { - private $processedConfigs = []; + private array $processedConfigs = []; /** * {@inheritdoc} diff --git a/src/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php b/src/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php index bfcffd312c883..29c898f06ac25 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php @@ -23,7 +23,7 @@ */ class ClosureLoader extends Loader { - private $container; + private ContainerBuilder $container; public function __construct(ContainerBuilder $container, string $env = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/AbstractServiceConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/AbstractServiceConfigurator.php index f4f61ab46a8b2..46c2907965ecd 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/AbstractServiceConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/AbstractServiceConfigurator.php @@ -18,7 +18,7 @@ abstract class AbstractServiceConfigurator extends AbstractConfigurator { protected $parent; protected $id; - private $defaultTags = []; + private array $defaultTags = []; public function __construct(ServicesConfigurator $parent, Definition $definition, string $id = null, array $defaultTags = []) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php index 59dea03c66847..c5622a72c5138 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php @@ -30,13 +30,13 @@ class ContainerConfigurator extends AbstractConfigurator { public const FACTORY = 'container'; - private $container; - private $loader; - private $instanceof; - private $path; - private $file; - private $anonymousCount = 0; - private $env; + private ContainerBuilder $container; + private PhpFileLoader $loader; + private array $instanceof; + private string $path; + private string $file; + private int $anonymousCount = 0; + private ?string $env; public function __construct(ContainerBuilder $container, PhpFileLoader $loader, array &$instanceof, string $path, string $file, string $env = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php index 49a92e5ce3a76..5e84848046a6f 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php @@ -26,7 +26,7 @@ class DefaultsConfigurator extends AbstractServiceConfigurator public const FACTORY = 'defaults'; - private $path; + private ?string $path; public function __construct(ServicesConfigurator $parent, Definition $definition, string $path = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php index d1864f564a0f3..8957224f9c82a 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php @@ -18,7 +18,7 @@ class EnvConfigurator extends ParamConfigurator /** * @var string[] */ - private $stack; + private array $stack; public function __construct(string $name) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/InlineServiceConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/InlineServiceConfigurator.php index da90a0a4ce682..9d3086a1b753d 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/InlineServiceConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/InlineServiceConfigurator.php @@ -32,9 +32,9 @@ class InlineServiceConfigurator extends AbstractConfigurator public const FACTORY = 'service'; - private $id = '[inline]'; - private $allowParent = true; - private $path = null; + private string $id = '[inline]'; + private bool $allowParent = true; + private ?string $path = null; public function __construct(Definition $definition) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/InstanceofConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/InstanceofConfigurator.php index fbba62304d28e..fc5cfdb4a4251 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/InstanceofConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/InstanceofConfigurator.php @@ -30,7 +30,7 @@ class InstanceofConfigurator extends AbstractServiceConfigurator public const FACTORY = 'instanceof'; - private $path; + private ?string $path; public function __construct(ServicesConfigurator $parent, Definition $definition, string $id, string $path = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ParametersConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ParametersConfigurator.php index 3b8ce1ad29eca..2b2c402d5fb3b 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ParametersConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ParametersConfigurator.php @@ -20,7 +20,7 @@ class ParametersConfigurator extends AbstractConfigurator { public const FACTORY = 'parameters'; - private $container; + private ContainerBuilder $container; public function __construct(ContainerBuilder $container) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/PrototypeConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/PrototypeConfigurator.php index e00ebe53b7464..34fb5dec3634c 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/PrototypeConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/PrototypeConfigurator.php @@ -37,10 +37,10 @@ class PrototypeConfigurator extends AbstractServiceConfigurator public const FACTORY = 'load'; - private $loader; - private $resource; - private $excludes; - private $allowParent; + private PhpFileLoader $loader; + private string $resource; + private ?array $excludes = null; + private bool $allowParent; public function __construct(ServicesConfigurator $parent, PhpFileLoader $loader, Definition $defaults, string $namespace, string $resource, bool $allowParent) { @@ -65,10 +65,10 @@ public function __destruct() { parent::__destruct(); - if ($this->loader) { + if (isset($this->loader)) { $this->loader->registerClasses($this->definition, $this->id, $this->resource, $this->excludes); } - $this->loader = null; + unset($this->loader); } /** diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServiceConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServiceConfigurator.php index 932ecd35153d5..49aff7ea947e7 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServiceConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServiceConfigurator.php @@ -41,11 +41,11 @@ class ServiceConfigurator extends AbstractServiceConfigurator public const FACTORY = 'services'; - private $container; - private $instanceof; - private $allowParent; - private $path; - private $destructed = false; + private ContainerBuilder $container; + private array $instanceof; + private bool $allowParent; + private ?string $path; + private bool $destructed = false; public function __construct(ContainerBuilder $container, array $instanceof, bool $allowParent, ServicesConfigurator $parent, Definition $definition, ?string $id, array $defaultTags, string $path = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServicesConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServicesConfigurator.php index d5cdf6a31490d..44752b1fb914e 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServicesConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ServicesConfigurator.php @@ -26,13 +26,13 @@ class ServicesConfigurator extends AbstractConfigurator { public const FACTORY = 'services'; - private $defaults; - private $container; - private $loader; - private $instanceof; - private $path; - private $anonymousHash; - private $anonymousCount; + private Definition $defaults; + private ContainerBuilder $container; + private PhpFileLoader $loader; + private array $instanceof; + private ?string $path; + private string $anonymousHash; + private int $anonymousCount; public function __construct(ContainerBuilder $container, PhpFileLoader $loader, array &$instanceof, string $path = null, int &$anonymousCount = 0) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php index 76d8a99c098c6..72f85fa179222 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php @@ -34,7 +34,7 @@ class PhpFileLoader extends FileLoader { protected $autoRegisterAliasesForSinglyImplementedInterfaces = false; - private $generator; + private ?ConfigBuilderGeneratorInterface $generator; public function __construct(ContainerBuilder $container, FileLocatorInterface $locator, string $env = null, ConfigBuilderGeneratorInterface $generator = null) { diff --git a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php index d9cfbee279f63..f98f69972e913 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php @@ -107,10 +107,10 @@ class YamlFileLoader extends FileLoader 'bind' => 'bind', ]; - private $yamlParser; + private YamlParser $yamlParser; - private $anonymousServicesCount; - private $anonymousServicesSuffix; + private int $anonymousServicesCount; + private string $anonymousServicesSuffix; protected $autoRegisterAliasesForSinglyImplementedInterfaces = false; @@ -750,9 +750,7 @@ protected function loadFile(string $file) throw new InvalidArgumentException(sprintf('The file "%s" does not exist.', $file)); } - if (null === $this->yamlParser) { - $this->yamlParser = new YamlParser(); - } + $this->yamlParser ??= new YamlParser(); try { $configuration = $this->yamlParser->parseFile($file, Yaml::PARSE_CONSTANT | Yaml::PARSE_CUSTOM_TAGS); diff --git a/src/Symfony/Component/DependencyInjection/Parameter.php b/src/Symfony/Component/DependencyInjection/Parameter.php index 23902cb0224dd..90dcc92045e65 100644 --- a/src/Symfony/Component/DependencyInjection/Parameter.php +++ b/src/Symfony/Component/DependencyInjection/Parameter.php @@ -18,7 +18,7 @@ */ class Parameter { - private $id; + private string $id; public function __construct(string $id) { diff --git a/src/Symfony/Component/DependencyInjection/ParameterBag/ContainerBag.php b/src/Symfony/Component/DependencyInjection/ParameterBag/ContainerBag.php index dd6c691373223..93281b6a7c31f 100644 --- a/src/Symfony/Component/DependencyInjection/ParameterBag/ContainerBag.php +++ b/src/Symfony/Component/DependencyInjection/ParameterBag/ContainerBag.php @@ -18,7 +18,7 @@ */ class ContainerBag extends FrozenParameterBag implements ContainerBagInterface { - private $container; + private Container $container; public function __construct(Container $container) { diff --git a/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php b/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php index ed128fa5ea523..d578cff72d0d3 100644 --- a/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php +++ b/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php @@ -19,12 +19,12 @@ */ class EnvPlaceholderParameterBag extends ParameterBag { - private $envPlaceholderUniquePrefix; - private $envPlaceholders = []; - private $unusedEnvPlaceholders = []; - private $providedTypes = []; + private string $envPlaceholderUniquePrefix; + private array $envPlaceholders = []; + private array $unusedEnvPlaceholders = []; + private array $providedTypes = []; - private static $counter = 0; + private static int $counter = 0; /** * {@inheritdoc} @@ -66,7 +66,7 @@ public function get(string $name) */ public function getEnvPlaceholderUniquePrefix(): string { - if (null === $this->envPlaceholderUniquePrefix) { + if (!isset($this->envPlaceholderUniquePrefix)) { $reproducibleEntropy = unserialize(serialize($this->parameters)); array_walk_recursive($reproducibleEntropy, function (&$v) { $v = null; }); $this->envPlaceholderUniquePrefix = 'env_'.substr(md5(serialize($reproducibleEntropy)), -16); diff --git a/src/Symfony/Component/DependencyInjection/Reference.php b/src/Symfony/Component/DependencyInjection/Reference.php index 502353c01ba10..d8010850c19d7 100644 --- a/src/Symfony/Component/DependencyInjection/Reference.php +++ b/src/Symfony/Component/DependencyInjection/Reference.php @@ -18,8 +18,8 @@ */ class Reference { - private $id; - private $invalidBehavior; + private string $id; + private int $invalidBehavior; public function __construct(string $id, int $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE) { diff --git a/src/Symfony/Component/DependencyInjection/ReverseContainer.php b/src/Symfony/Component/DependencyInjection/ReverseContainer.php index 280e9e2dd5a63..9635c5bceefe5 100644 --- a/src/Symfony/Component/DependencyInjection/ReverseContainer.php +++ b/src/Symfony/Component/DependencyInjection/ReverseContainer.php @@ -21,10 +21,10 @@ */ final class ReverseContainer { - private $serviceContainer; - private $reversibleLocator; - private $tagName; - private $getServiceId; + private Container $serviceContainer; + private ContainerInterface $reversibleLocator; + private string $tagName; + private \Closure $getServiceId; public function __construct(Container $serviceContainer, ContainerInterface $reversibleLocator, string $tagName = 'container.reversible') { diff --git a/src/Symfony/Component/DependencyInjection/ServiceLocator.php b/src/Symfony/Component/DependencyInjection/ServiceLocator.php index 4be0d6f721f82..2191524f9c0f0 100644 --- a/src/Symfony/Component/DependencyInjection/ServiceLocator.php +++ b/src/Symfony/Component/DependencyInjection/ServiceLocator.php @@ -30,8 +30,8 @@ class ServiceLocator implements ServiceProviderInterface get as private doGet; } - private $externalId; - private $container; + private ?string $externalId = null; + private ?Container $container = null; /** * {@inheritdoc} diff --git a/src/Symfony/Component/DependencyInjection/TypedReference.php b/src/Symfony/Component/DependencyInjection/TypedReference.php index 4099a0059b133..946edb941d020 100644 --- a/src/Symfony/Component/DependencyInjection/TypedReference.php +++ b/src/Symfony/Component/DependencyInjection/TypedReference.php @@ -18,8 +18,8 @@ */ class TypedReference extends Reference { - private $type; - private $name; + private string $type; + private ?string $name; /** * @param string $id The service identifier diff --git a/src/Symfony/Component/DependencyInjection/Variable.php b/src/Symfony/Component/DependencyInjection/Variable.php index a888d3f78c0f9..bb275cef60bcb 100644 --- a/src/Symfony/Component/DependencyInjection/Variable.php +++ b/src/Symfony/Component/DependencyInjection/Variable.php @@ -26,7 +26,7 @@ */ class Variable { - private $name; + private string $name; public function __construct(string $name) {