function TokenParser::parseUseStatement

Parses a single use statement.

Return value

array<string, string> A list with all found class names for a use statement.

1 call to TokenParser::parseUseStatement()
TokenParser::parseUseStatements in core/lib/Drupal/Component/Annotation/Doctrine/TokenParser.php
Gets all use statements.

File

core/lib/Drupal/Component/Annotation/Doctrine/TokenParser.php, line 119

Class

TokenParser
Parses a file for namespaces/use/class declarations.

Namespace

Drupal\Component\Annotation\Doctrine

Code

public function parseUseStatement() {
  $groupRoot = '';
  $class = '';
  $alias = '';
  $statements = [];
  $explicitAlias = false;
  while ($token = $this->next()) {
    if (!$explicitAlias && $token[0] === T_STRING) {
      $class .= $token[1];
      $alias = $token[1];
    }
    elseif ($explicitAlias && $token[0] === T_STRING) {
      $alias = $token[1];
    }
    elseif (PHP_VERSION_ID >= 80000 && ($token[0] === T_NAME_QUALIFIED || $token[0] === T_NAME_FULLY_QUALIFIED)) {
      $class .= $token[1];
      $classSplit = explode('\\', $token[1]);
      $alias = $classSplit[count($classSplit) - 1];
    }
    elseif ($token[0] === T_NS_SEPARATOR) {
      $class .= '\\';
      $alias = '';
    }
    elseif ($token[0] === T_AS) {
      $explicitAlias = true;
      $alias = '';
    }
    elseif ($token === ',') {
      $statements[strtolower($alias)] = $groupRoot . $class;
      $class = '';
      $alias = '';
      $explicitAlias = false;
    }
    elseif ($token === ';') {
      $statements[strtolower($alias)] = $groupRoot . $class;
      break;

    }
    elseif ($token === '{') {
      $groupRoot = $class;
      $class = '';
    }
    elseif ($token === '}') {
      continue;
    }
    else {
      break;

    }
  }
  return $statements;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.