@@ 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 | { |