Skip to content

Commit 529f030

Browse files
committed
DeprecationProvider: lazy extensions
1 parent 6935ac4 commit 529f030

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

src/Reflection/Deprecation/DeprecationProvider.php

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,37 @@
1616
final class DeprecationProvider
1717
{
1818

19-
/** @var array<PropertyDeprecationExtension> $propertyDeprecationExtensions */
20-
private array $propertyDeprecationExtensions;
19+
/** @var ?array<PropertyDeprecationExtension> $propertyDeprecationExtensions */
20+
private ?array $propertyDeprecationExtensions = null;
2121

22-
/** @var array<MethodDeprecationExtension> $methodDeprecationExtensions */
23-
private array $methodDeprecationExtensions;
22+
/** @var ?array<MethodDeprecationExtension> $methodDeprecationExtensions */
23+
private ?array $methodDeprecationExtensions = null;
2424

25-
/** @var array<ClassConstantDeprecationExtension> $classConstantDeprecationExtensions */
26-
private array $classConstantDeprecationExtensions;
25+
/** @var ?array<ClassConstantDeprecationExtension> $classConstantDeprecationExtensions */
26+
private ?array $classConstantDeprecationExtensions = null;
2727

28-
/** @var array<ClassDeprecationExtension> $classDeprecationExtensions */
29-
private array $classDeprecationExtensions;
28+
/** @var ?array<ClassDeprecationExtension> $classDeprecationExtensions */
29+
private ?array $classDeprecationExtensions = null;
3030

31-
/** @var array<FunctionDeprecationExtension> $functionDeprecationExtensions */
32-
private array $functionDeprecationExtensions;
31+
/** @var ?array<FunctionDeprecationExtension> $functionDeprecationExtensions */
32+
private ?array $functionDeprecationExtensions = null;
3333

34-
/** @var array<ConstantDeprecationExtension> $constantDeprecationExtensions */
35-
private array $constantDeprecationExtensions;
34+
/** @var ?array<ConstantDeprecationExtension> $constantDeprecationExtensions */
35+
private ?array $constantDeprecationExtensions = null;
3636

37-
/** @var array<EnumCaseDeprecationExtension> $enumCaseDeprecationExtensions */
38-
private array $enumCaseDeprecationExtensions;
37+
/** @var ?array<EnumCaseDeprecationExtension> $enumCaseDeprecationExtensions */
38+
private ?array $enumCaseDeprecationExtensions = null;
3939

4040
public function __construct(
41-
Container $container,
41+
private Container $container,
4242
)
4343
{
44-
$this->propertyDeprecationExtensions = $container->getServicesByTag('phpstan.propertyDeprecationExtension');
45-
$this->methodDeprecationExtensions = $container->getServicesByTag('phpstan.methodDeprecationExtension');
46-
$this->classConstantDeprecationExtensions = $container->getServicesByTag('phpstan.classConstantDeprecationExtension');
47-
$this->classDeprecationExtensions = $container->getServicesByTag('phpstan.classDeprecationExtension');
48-
$this->functionDeprecationExtensions = $container->getServicesByTag('phpstan.functionDeprecationExtension');
49-
$this->constantDeprecationExtensions = $container->getServicesByTag('phpstan.constantDeprecationExtension');
50-
$this->enumCaseDeprecationExtensions = $container->getServicesByTag('phpstan.enumCaseDeprecationExtension');
5144
}
5245

5346
public function getPropertyDeprecation(ReflectionProperty $reflectionProperty): ?Deprecation
5447
{
48+
$this->propertyDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.propertyDeprecationExtension');
49+
5550
foreach ($this->propertyDeprecationExtensions as $extension) {
5651
$deprecation = $extension->getPropertyDeprecation($reflectionProperty);
5752
if ($deprecation !== null) {
@@ -64,6 +59,8 @@ public function getPropertyDeprecation(ReflectionProperty $reflectionProperty):
6459

6560
public function getMethodDeprecation(ReflectionMethod $methodReflection): ?Deprecation
6661
{
62+
$this->methodDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.methodDeprecationExtension');
63+
6764
foreach ($this->methodDeprecationExtensions as $extension) {
6865
$deprecation = $extension->getMethodDeprecation($methodReflection);
6966
if ($deprecation !== null) {
@@ -76,6 +73,8 @@ public function getMethodDeprecation(ReflectionMethod $methodReflection): ?Depre
7673

7774
public function getClassConstantDeprecation(ReflectionClassConstant $reflectionConstant): ?Deprecation
7875
{
76+
$this->classConstantDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.classConstantDeprecationExtension');
77+
7978
foreach ($this->classConstantDeprecationExtensions as $extension) {
8079
$deprecation = $extension->getClassConstantDeprecation($reflectionConstant);
8180
if ($deprecation !== null) {
@@ -88,6 +87,8 @@ public function getClassConstantDeprecation(ReflectionClassConstant $reflectionC
8887

8988
public function getClassDeprecation(ReflectionClass|ReflectionEnum $reflection): ?Deprecation
9089
{
90+
$this->classDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.classDeprecationExtension');
91+
9192
foreach ($this->classDeprecationExtensions as $extension) {
9293
$deprecation = $extension->getClassDeprecation($reflection);
9394
if ($deprecation !== null) {
@@ -100,6 +101,8 @@ public function getClassDeprecation(ReflectionClass|ReflectionEnum $reflection):
100101

101102
public function getFunctionDeprecation(ReflectionFunction $reflectionFunction): ?Deprecation
102103
{
104+
$this->functionDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.functionDeprecationExtension');
105+
103106
foreach ($this->functionDeprecationExtensions as $extension) {
104107
$deprecation = $extension->getFunctionDeprecation($reflectionFunction);
105108
if ($deprecation !== null) {
@@ -112,6 +115,8 @@ public function getFunctionDeprecation(ReflectionFunction $reflectionFunction):
112115

113116
public function getConstantDeprecation(ReflectionConstant $constantReflection): ?Deprecation
114117
{
118+
$this->constantDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.constantDeprecationExtension');
119+
115120
foreach ($this->constantDeprecationExtensions as $extension) {
116121
$deprecation = $extension->getConstantDeprecation($constantReflection);
117122
if ($deprecation !== null) {
@@ -124,6 +129,8 @@ public function getConstantDeprecation(ReflectionConstant $constantReflection):
124129

125130
public function getEnumCaseDeprecation(ReflectionEnumUnitCase|ReflectionEnumBackedCase $enumCaseReflection): ?Deprecation
126131
{
132+
$this->enumCaseDeprecationExtensions ??= $this->container->getServicesByTag('phpstan.enumCaseDeprecationExtension');
133+
127134
foreach ($this->enumCaseDeprecationExtensions as $extension) {
128135
$deprecation = $extension->getEnumCaseDeprecation($enumCaseReflection);
129136
if ($deprecation !== null) {

0 commit comments

Comments
 (0)