diff --git a/src/Utils/Reflection.php b/src/Utils/Reflection.php index 371001be0..5e49680ec 100644 --- a/src/Utils/Reflection.php +++ b/src/Utils/Reflection.php @@ -232,11 +232,15 @@ private static function parseUseStatements($code, $forClass = null) $namespace = $class = $classLevel = $level = null; $res = $uses = []; + $nameTokens = PHP_VERSION_ID < 80000 + ? [T_STRING, T_NS_SEPARATOR] + : [T_STRING, T_NS_SEPARATOR, T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED]; + 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; @@ -254,10 +258,10 @@ private static function parseUseStatements($code, $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 {