1 <?php declare(strict_types=1);
3 namespace PhpParser\NodeVisitor;
6 use PhpParser\Node\Expr;
7 use PhpParser\NodeTraverser;
8 use PHPUnit\Framework\TestCase;
10 class FindingVisitorTest extends TestCase
12 public function testFindVariables() {
13 $traverser = new NodeTraverser();
14 $visitor = new FindingVisitor(function(Node $node) {
15 return $node instanceof Node\Expr\Variable;
17 $traverser->addVisitor($visitor);
19 $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
20 new Expr\Variable('b'), new Expr\Variable('c')
22 $stmts = [new Node\Stmt\Expression($assign)];
24 $traverser->traverse($stmts);
29 ], $visitor->getFoundNodes());
32 public function testFindAll() {
33 $traverser = new NodeTraverser();
34 $visitor = new FindingVisitor(function(Node $node) {
35 return true; // All nodes
37 $traverser->addVisitor($visitor);
39 $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
40 new Expr\Variable('b'), new Expr\Variable('c')
42 $stmts = [new Node\Stmt\Expression($assign)];
44 $traverser->traverse($stmts);
52 ], $visitor->getFoundNodes());