PHPParser_NodeTraverser::traverse PHP Method

traverse() public method

Traverses an array of nodes using the registered visitors.
public traverse ( array $nodes ) : PHPParser_Node[]
$nodes array Array of nodes
return PHPParser_Node[] Traversed array of nodes
    public function traverse(array $nodes)
    {
        foreach ($this->visitors as $visitor) {
            if (null !== ($return = $visitor->beforeTraverse($nodes))) {
                $nodes = $return;
            }
        }
        $nodes = $this->traverseArray($nodes);
        foreach ($this->visitors as $visitor) {
            if (null !== ($return = $visitor->afterTraverse($nodes))) {
                $nodes = $return;
            }
        }
        return $nodes;
    }

Usage Example

Exemplo n.º 1
0
 public static function parse($code)
 {
     $lexer = new \PHPParser_Lexer($code);
     $parser = new \PHPParser_Parser();
     $ast = $parser->parse($lexer);
     $traverser = new \PHPParser_NodeTraverser();
     $traverser->addVisitor(new NormalizingNodeVisitor());
     $traverser->addVisitor(new \PHPParser_NodeVisitor_NameResolver());
     $ast = $traverser->traverse($ast);
     switch (count($ast)) {
         case 0:
             $ast = new BlockNode(array());
             break;
         case 1:
             $ast = $ast[0];
             break;
         default:
             $ast = new BlockNode($ast);
     }
     // This is currently only available when using the schmittjoh/PHP-Parser fork.
     if (class_exists('PHPParser_NodeVisitor_NodeConnector')) {
         $traverser = new \PHPParser_NodeTraverser();
         $traverser->addVisitor(new \PHPParser_NodeVisitor_NodeConnector());
         $traverser->traverse(array($ast));
     }
     return $ast;
 }
All Usage Examples Of PHPParser_NodeTraverser::traverse