diff --git a/src/Utils/Reflection.php b/src/Utils/Reflection.php index 1614c6d77..0ce2f1e40 100644 --- a/src/Utils/Reflection.php +++ b/src/Utils/Reflection.php @@ -255,11 +255,18 @@ private static function parseUseStatements(string $code, string $forClass = null $namespace = $class = $classLevel = $level = null; $res = $uses = []; + $nameTokens = [T_STRING, T_NS_SEPARATOR]; + if (PHP_VERSION_ID >= 80000) { + $nameTokens[] = T_NAME_QUALIFIED; + $nameTokens[] = T_NAME_FULLY_QUALIFIED; + $nameTokens[] = T_NAME_RELATIVE; + } + while ($token = current($tokens)) { next($tokens); switch (is_array($token) ? $token[0] : $token) { case T_NAMESPACE: - $namespace = ltrim(self::fetch($tokens, [T_STRING, T_NS_SEPARATOR]) . '\\', '\\'); + $namespace = ltrim(self::fetch($tokens, $nameTokens) . '\\', '\\'); $uses = []; break; @@ -277,10 +284,10 @@ private static function parseUseStatements(string $code, string $forClass = null break; case T_USE: - while (!$class && ($name = self::fetch($tokens, [T_STRING, T_NS_SEPARATOR]))) { + while (!$class && ($name = self::fetch($tokens, $nameTokens))) { $name = ltrim($name, '\\'); if (self::fetch($tokens, '{')) { - while ($suffix = self::fetch($tokens, [T_STRING, T_NS_SEPARATOR])) { + while ($suffix = self::fetch($tokens, $nameTokens)) { if (self::fetch($tokens, T_AS)) { $uses[self::fetch($tokens, T_STRING)] = $name . $suffix; } else {