/** * @param FileInterface $file * @return string[] */ private function getClassFromFile(FileInterface $file) : array { $classes = []; $tokens = token_get_all($file->getContents()); $count = count($tokens); $namespace = ''; for ($i = 2; $i < $count; $i++) { // Detect the namespace if ($tokens[$i - 2][0] === T_NAMESPACE && $tokens[$i - 1][0] === T_WHITESPACE && $tokens[$i][0] === T_STRING) { while ($tokens[$i][0] === T_STRING || $tokens[$i][0] === T_NS_SEPARATOR) { $namespace .= $tokens[$i][1]; $i += 1; } } if ($tokens[$i - 2][0] === T_CLASS && $tokens[$i - 1][0] === T_WHITESPACE && $tokens[$i][0] === T_STRING) { $classes[] = $tokens[$i][1]; } } if ($namespace) { return array_map(function ($class) use($namespace) { return "{$namespace}\\{$class}"; }, $classes); } return $classes; }