From 153ef73a5d3c6342c089124cb132d9ed617b4f04 Mon Sep 17 00:00:00 2001 From: Matthias Leutenegger Date: Wed, 21 Jun 2023 17:01:00 +0200 Subject: [PATCH] change: use ClassInfo to look for all available Classes --- src/Type/ExtensionReturnTypeExtension.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Type/ExtensionReturnTypeExtension.php b/src/Type/ExtensionReturnTypeExtension.php index bfbe969..b9d27b3 100644 --- a/src/Type/ExtensionReturnTypeExtension.php +++ b/src/Type/ExtensionReturnTypeExtension.php @@ -3,6 +3,8 @@ namespace Syntro\SilverstripePHPStan\Type; use Exception; +use SilverStripe\Core\ClassInfo; +use SilverStripe\Core\Extensible; use Syntro\SilverstripePHPStan\ClassHelper; use Syntro\SilverstripePHPStan\ConfigHelper; use Syntro\SilverstripePHPStan\Utility; @@ -127,16 +129,13 @@ private function getOwnerClassNamesByExtensionClassName() private function getClassesUsingExtensibleTrait() { - $classes = get_declared_classes(); + $classes = ClassInfo::allClasses(); $result = array(); foreach ($classes as $class) { - $hasTrait = false; - foreach ($classes as $subclass) { - $hasTrait = false; - foreach (class_uses($class) as $trait) { - $hasTrait = $hasTrait || $trait == ClassHelper::Extensible; - } - if ($hasTrait) { + $reflection = new \ReflectionClass($class); + $traits = $reflection->getTraits(); + if (in_array(Extensible::class, $traits)) { + foreach (ClassInfo::subclassesFor($class, true) as $subclass) { $result[$subclass] = $subclass; } }