/** * 判断节点是否是数组定义类型symbol * @param AST $node * @return boolean */ public static function isArrayDimFetch($node) { $type = $node->getType(); if ($type == "Expr_ArrayDimFetch" or $type == "Expr_Array") { return true; } else { return false; } }
/** * 获取concat中的各个成员 * 形如: * (1) "aaaa" . $b . "bbbbbb" ; * 使用时,只需要将最大的一个concat传递过来当做参数$node即可 * @param AST $node */ public function setItemByNode($node) { $type = $node->getType(); if ($type == "Expr_BinaryOp_Concat") { $parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative()); $traverser = new PhpParser\NodeTraverser(); $visitor = new BinaryOpConcatVisitor(); $traverser->addVisitor($visitor); $traverser->traverse(array($node)); $this->items = $visitor->getItems(); } }
/** * 通过AST node来设置Value符号的值 * @param AST $node */ public function setValueByNode($node) { $type = $node->getType(); $this->value = $node->value; }