This commit is contained in:
2026-07-07 16:00:06 +08:00
parent e1a23090d6
commit 8d340a8a45
+18 -6
View File
@@ -261,11 +261,10 @@ class Scanner extends Component
if ($loadFile) {
$before = $this->getDeclaredSymbols();
require_once $path;
$after = $this->getDeclaredSymbols();
$classes = array_values(array_unique(array_merge(
$classes,
array_diff($after, $before)
)));
if ($classes === []) {
$after = $this->getDeclaredSymbols();
$classes = array_values(array_diff($after, $before));
}
}
foreach ($classes as $class) {
@@ -328,7 +327,7 @@ class Scanner extends Component
continue;
}
if ($token[0] === T_CLASS && $this->isAnonymousClass($tokens, $i)) {
if ($token[0] === T_CLASS && ($this->isAnonymousClass($tokens, $i) || $this->isClassConstant($tokens, $i))) {
continue;
}
@@ -398,6 +397,19 @@ class Scanner extends Component
return false;
}
private function isClassConstant(array $tokens, int $offset): bool
{
for ($i = $offset - 1; $i >= 0; $i--) {
$token = $tokens[$i];
if (is_array($token) && in_array($token[0], [T_WHITESPACE, T_COMMENT, T_DOC_COMMENT], true)) {
continue;
}
return is_array($token) && $token[0] === T_DOUBLE_COLON;
}
return false;
}
private function getDeclaredSymbols(): array
{
return array_merge(get_declared_classes(), get_declared_interfaces(), get_declared_traits());