diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a0fc80..7aa3df8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## v0.3.7 (2024-07-31) +* Allow abstract classes as scanner interfaces + ## v0.3.6 (2024-07-17) * Updated Veneer dependency diff --git a/src/Handler.php b/src/Handler.php index 031bd6f..c2ce647 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -407,9 +407,7 @@ public function scanClasses( } foreach ($resolver->scanClasses() as $path => $class) { - $ref = new ReflectionClass($class); - - if (!$ref->implementsInterface($interface)) { + if (!is_a($class, $interface, true)) { continue; } diff --git a/src/Resolver/ScannerTrait.php b/src/Resolver/ScannerTrait.php index 0ec9991..e31d6d4 100644 --- a/src/Resolver/ScannerTrait.php +++ b/src/Resolver/ScannerTrait.php @@ -14,7 +14,6 @@ use Generator; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; -use ReflectionClass; trait ScannerTrait { @@ -92,9 +91,7 @@ protected function scanVendorPath( } if ($interface !== null) { - $ref = new ReflectionClass($class); - - if (!$ref->implementsInterface($interface)) { + if (!is_a($class, $interface, true)) { continue; } }