Beispiel #1
0
 /**
  * @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;
 }