Chris@13: addVisitor($visitor); Chris@13: Chris@13: $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat( Chris@13: new Expr\Variable('b'), new Expr\Variable('c') Chris@13: )); Chris@13: $stmts = [new Node\Stmt\Expression($assign)]; Chris@13: Chris@13: $traverser->traverse($stmts); Chris@13: $this->assertSame([ Chris@13: $assign->var, Chris@13: $assign->expr->left, Chris@13: $assign->expr->right, Chris@13: ], $visitor->getFoundNodes()); Chris@13: } Chris@13: Chris@13: public function testFindAll() { Chris@13: $traverser = new NodeTraverser(); Chris@13: $visitor = new FindingVisitor(function(Node $node) { Chris@13: return true; // All nodes Chris@13: }); Chris@13: $traverser->addVisitor($visitor); Chris@13: Chris@13: $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat( Chris@13: new Expr\Variable('b'), new Expr\Variable('c') Chris@13: )); Chris@13: $stmts = [new Node\Stmt\Expression($assign)]; Chris@13: Chris@13: $traverser->traverse($stmts); Chris@13: $this->assertSame([ Chris@13: $stmts[0], Chris@13: $assign, Chris@13: $assign->var, Chris@13: $assign->expr, Chris@13: $assign->expr->left, Chris@13: $assign->expr->right, Chris@13: ], $visitor->getFoundNodes()); Chris@13: } Chris@13: }