Skip to content

Commit afb9975

Browse files
lookymanondrejmirtes
authored andcommitted
Cache calls to ClassReflection::isSubclassOf()
1 parent b68a635 commit afb9975

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/Reflection/ClassReflection.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ class ClassReflection implements ReflectionWithFilename
8181
/** @var string|null */
8282
private $cacheKey;
8383

84+
/** @var array<string, bool> */
85+
private $subclasses = [];
86+
8487
/**
8588
* @param \PHPStan\Reflection\ReflectionProvider $reflectionProvider
8689
* @param \PHPStan\Type\FileTypeMapper $fileTypeMapper
@@ -439,11 +442,15 @@ public function isAnonymous(): bool
439442

440443
public function isSubclassOf(string $className): bool
441444
{
445+
if (isset($this->subclasses[$className])) {
446+
return $this->subclasses[$className];
447+
}
448+
442449
if (!$this->reflectionProvider->hasClass($className)) {
443-
return false;
450+
return $this->subclasses[$className] = false;
444451
}
445452

446-
return $this->reflection->isSubclassOf($className);
453+
return $this->subclasses[$className] = $this->reflection->isSubclassOf($className);
447454
}
448455

449456
/**

0 commit comments

Comments
 (0)