private function variable() {
    switch ($this->currentType) {
      case T_STRING:
      case T_NS_SEPARATOR:
      case T_NAMESPACE:
        $namespace_path = $this->name();
        if ($this->currentType === '(') {
          return $this->functionCall($namespace_path);
        }
        elseif ($this->currentType === T_DOUBLE_COLON) {
          return $this->varClass($namespace_path);
        }
        break;
      case T_STATIC:
        $class_name = $this->mustMatchToken(T_STATIC);
        return $this->varClass($class_name);
      case '$':
      case T_VARIABLE:
        $var = $this->indirectReference();
        if ($this->currentType === '(') {
          return $this->functionCall($var, TRUE);
        }
        elseif (!($var instanceof VariableVariableNode) && $this->currentType === T_DOUBLE_COLON) {
          return $this->varClass($var);
        }
        else {
          return $this->objectDereference($var);
        }
    }
    throw new ParserException(
      $this->filename,
      $this->iterator->getLineNumber(),
      $this->iterator->getColumnNumber(),
      "expected variable");
  }
private function variable() {
    switch ($this->currentType) {
      case T_STRING:
      case T_NS_SEPARATOR:
      case T_NAMESPACE:
        $namespace_path = $this->name();
        if ($this->currentType === '(') {
          return $this->functionCall($namespace_path);
        }
        elseif ($this->currentType === T_DOUBLE_COLON) {
          return $this->varClass($namespace_path);
        }
        break;
      case T_STATIC:
        $class_name = $this->mustMatchToken(T_STATIC);
        return $this->varClass($class_name);
      case '$':
      case T_VARIABLE:
        $var = $this->indirectReference();
        if ($this->currentType === '(') {
          return $this->functionCall($var, TRUE);
        }
        elseif (!($var instanceof VariableVariableNode) && $this->currentType === T_DOUBLE_COLON) {
          return $this->varClass($var);
        }
        else {
          return $this->objectDereference($var);
        }
    }
    throw new ParserException(
      $this->filename,
      $this->iterator->getLineNumber(),
      $this->iterator->getColumnNumber(),
      "expected variable");
  }
private function variable ( ) { switch ( $ this -> currentType ) { case T_STRING : case T_NS_SEPARATOR : case T_NAMESPACE : $ namespace_path = $ this -> name ( ) ; if ( $ this -> currentType === '(' ) { return $ this -> functionCall ( $ namespace_path ) ; } elseif ( $ this -> currentType === T_DOUBLE_COLON ) { return $ this -> varClass ( $ namespace_path ) ; } break ; case T_STATIC : $ class_name = $ this -> mustMatchToken ( T_STATIC ) ; return $ this -> varClass ( $ class_name ) ; case '$' : case T_VARIABLE : $ var = $ this -> indirectReference ( ) ; if ( $ this -> currentType === '(' ) { return $ this -> functionCall ( $ var , TRUE ) ; } elseif ( ! ( $ var instanceof VariableVariableNode ) && $ this -> currentType === T_DOUBLE_COLON ) { return $ this -> varClass ( $ var ) ; } else { return $ this -> objectDereference ( $ var ) ; } } throw new ParserException ( $ this -> filename , $ this -> iterator -> getLineNumber ( ) , $ this -> iterator -> getColumnNumber ( ) , "expected variable" ) ; }
Parse variable.
@return Node
@throws ParserException
Parse variable .