Skip to content

Commit 2b8c2a1

Browse files
committed
Reflection::getUseStatements() throw exceptions on anonymous class
1 parent 9f54015 commit 2b8c2a1

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/Utils/Reflection.php

+3
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ public static function expandClassName(string $name, \ReflectionClass $rc): stri
188188
*/
189189
public static function getUseStatements(\ReflectionClass $class): array
190190
{
191+
if ($class->isAnonymous()) {
192+
throw new Nette\NotImplementedException('Anonymous classes are not supported.');
193+
}
191194
static $cache = [];
192195
if (!isset($cache[$name = $class->getName()])) {
193196
if ($class->isInternal()) {

tests/Utils/Reflection.expandClassName.phpt

+11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ Assert::exception(function () use ($rcTest) {
2727
}, Nette\InvalidArgumentException::class, 'Class name must not be empty.');
2828

2929

30+
Assert::exception(function () use ($rcTest) {
31+
Reflection::expandClassName('A', new ReflectionClass(new class {
32+
}));
33+
}, Nette\NotImplementedException::class, 'Anonymous classes are not supported.');
34+
35+
3036
Assert::same('A', Reflection::expandClassName('A', $rcTest));
3137
Assert::same('A\B', Reflection::expandClassName('C', $rcTest));
3238

@@ -139,3 +145,8 @@ Assert::same(
139145
[],
140146
Reflection::getUseStatements(new ReflectionClass('stdClass'))
141147
);
148+
149+
Assert::exception(function () use ($rcTest) {
150+
Reflection::getUseStatements(new ReflectionClass(new class {
151+
}));
152+
}, Nette\NotImplementedException::class, 'Anonymous classes are not supported.');

0 commit comments

Comments
 (0)