private static function ClassMapGenerator::findClasses

Extract the classes in the given file

Parameters

string $path The file to check:

Return value

array The found classes

1 call to ClassMapGenerator::findClasses()
ClassMapGenerator::createMap in drupal/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php
Iterate over all files in the given directory searching for classes

File

drupal/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php, line 83

Class

ClassMapGenerator
ClassMapGenerator

Namespace

Symfony\Component\ClassLoader

Code

private static function findClasses($path) {
  $contents = file_get_contents($path);
  $tokens = token_get_all($contents);
  $T_TRAIT = version_compare(PHP_VERSION, '5.4', '<') ? -1 : T_TRAIT;
  $classes = array();
  $namespace = '';
  for ($i = 0, $max = count($tokens); $i < $max; $i++) {
    $token = $tokens[$i];
    if (is_string($token)) {
      continue;
    }
    $class = '';
    switch ($token[0]) {
      case T_NAMESPACE:
        $namespace = '';

        // If there is a namespace, extract it
        while (($t = $tokens[++$i]) && is_array($t)) {
          if (in_array($t[0], array(
            T_STRING,
            T_NS_SEPARATOR,
          ))) {
            $namespace .= $t[1];
          }
        }
        $namespace .= '\\';
        break;
      case T_CLASS:
      case T_INTERFACE:
      case $T_TRAIT:

        // Find the classname
        while (($t = $tokens[++$i]) && is_array($t)) {
          if (T_STRING === $t[0]) {
            $class .= $t[1];
          }
          elseif ($class !== '' && T_WHITESPACE == $t[0]) {
            break;
          }
        }
        $classes[] = ltrim($namespace . $class, '\\');
        break;
      default:
        break;
    }
  }
  return $classes;
}