| @@ 90-107 (lines=18) @@ | ||
| 87 | } |
|
| 88 | } |
|
| 89 | ||
| 90 | function listInstantiatableClassesInDirectories(string ...$directories): iterable |
|
| 91 | { |
|
| 92 | $iterator = listClassesInDirectories(...$directories); |
|
| 93 | ||
| 94 | return new class($iterator) extends \FilterIterator { |
|
| 95 | public function accept(): bool |
|
| 96 | { |
|
| 97 | $className = $this->getInnerIterator()->current(); |
|
| 98 | try { |
|
| 99 | $reflectionClass = ReflectionClass::createFromName($className); |
|
| 100 | ||
| 101 | return $reflectionClass->isInstantiable(); |
|
| 102 | } catch (IdentifierNotFound $exception) { |
|
| 103 | return false; |
|
| 104 | } |
|
| 105 | } |
|
| 106 | }; |
|
| 107 | } |
|
| 108 | ||
| 109 | function listInstantiatableClassesInDirectory(string $directory): iterable |
|
| 110 | { |
|
| @@ 114-131 (lines=18) @@ | ||
| 111 | yield from listInstantiatableClassesInDirectories($directory); |
|
| 112 | } |
|
| 113 | ||
| 114 | function listNonInstantiatableClassesInDirectories(string ...$directories): iterable |
|
| 115 | { |
|
| 116 | $iterator = listClassesInDirectories(...$directories); |
|
| 117 | ||
| 118 | return new class($iterator) extends \FilterIterator { |
|
| 119 | public function accept(): bool |
|
| 120 | { |
|
| 121 | $className = $this->getInnerIterator()->current(); |
|
| 122 | try { |
|
| 123 | $reflectionClass = ReflectionClass::createFromName($className); |
|
| 124 | ||
| 125 | return $reflectionClass->isInstantiable() === false; |
|
| 126 | } catch (IdentifierNotFound $exception) { |
|
| 127 | return true; |
|
| 128 | } |
|
| 129 | } |
|
| 130 | }; |
|
| 131 | } |
|
| 132 | ||
| 133 | function listNonInstantiatableClassesInDirectory(string $directory): iterable |
|
| 134 | { |
|