abstract class PHP_TokenWithScope

Hierarchy

Expanded class hierarchy of PHP_TokenWithScope

File

drupal/core/vendor/phpunit/php-token-stream/PHP/Token.php, line 109

View source
abstract class PHP_TokenWithScope extends PHP_Token {
  protected $endTokenId;

  /**
   * Get the docblock for this token
   *
   * This method will fetch the docblock belonging to the current token. The
   * docblock must be placed on the line directly above the token to be
   * recognized.
   *
   * @return string|null Returns the docblock as a string if found
   */
  public function getDocblock() {
    $tokens = $this->tokenStream
      ->tokens();
    $currentLineNumber = $tokens[$this->id]
      ->getLine();
    $prevLineNumber = $currentLineNumber - 1;
    for ($i = $this->id - 1; $i; $i--) {
      if (!isset($tokens[$i])) {
        return;
      }
      if ($tokens[$i] instanceof PHP_Token_FUNCTION || $tokens[$i] instanceof PHP_Token_CLASS || $tokens[$i] instanceof PHP_Token_TRAIT) {

        // Some other trait, class or function, no docblock can be
        // used for the current token
        break;
      }
      $line = $tokens[$i]
        ->getLine();
      if ($line == $currentLineNumber || $line == $prevLineNumber && $tokens[$i] instanceof PHP_Token_WHITESPACE) {
        continue;
      }
      if ($line < $currentLineNumber && !$tokens[$i] instanceof PHP_Token_DOC_COMMENT) {
        break;
      }
      return (string) $tokens[$i];
    }
  }
  public function getEndTokenId() {
    $block = 0;
    $i = $this->id;
    $tokens = $this->tokenStream
      ->tokens();
    while ($this->endTokenId === NULL && isset($tokens[$i])) {
      if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY || $tokens[$i] instanceof PHP_Token_CURLY_OPEN) {
        $block++;
      }
      else {
        if ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
          $block--;
          if ($block === 0) {
            $this->endTokenId = $i;
          }
        }
        else {
          if (($this instanceof PHP_Token_FUNCTION || $this instanceof PHP_Token_NAMESPACE) && $tokens[$i] instanceof PHP_Token_SEMICOLON) {
            if ($block === 0) {
              $this->endTokenId = $i;
            }
          }
        }
      }
      $i++;
    }
    if ($this->endTokenId === NULL) {
      $this->endTokenId = $this->id;
    }
    return $this->endTokenId;
  }
  public function getEndLine() {
    return $this->tokenStream[$this
      ->getEndTokenId()]
      ->getLine();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHP_Token::$id protected property
PHP_Token::$line protected property
PHP_Token::$text protected property
PHP_Token::$tokenStream protected property
PHP_Token::getLine public function
PHP_Token::__construct public function Constructor.
PHP_Token::__toString public function
PHP_TokenWithScope::$endTokenId protected property
PHP_TokenWithScope::getDocblock public function Get the docblock for this token
PHP_TokenWithScope::getEndLine public function
PHP_TokenWithScope::getEndTokenId public function