PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
wpide / vendor / nikic / php-parser / lib / PhpParser / NodeFinder.php

NodeFinder.php in WPIDE – File Manager & Code Editor 3.5.9, at vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php

82 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace PhpParser;
4
5 use PhpParser\NodeVisitor\FindingVisitor;
6 use PhpParser\NodeVisitor\FirstFindingVisitor;
7
8 class NodeFinder
9 {
10 /**
11 * Find all nodes satisfying a filter callback.
12 *
13 * @param Node|Node[] $nodes Single node or array of nodes to search in
14 * @param callable $filter Filter callback: function(Node $node) : bool
15 *
16 * @return Node[] Found nodes satisfying the filter callback
17 */
18 public function find($nodes, callable $filter) : array {
19 if (!is_array($nodes)) {
20 $nodes = [$nodes];
21 }
22
23 $visitor = new FindingVisitor($filter);
24
25 $traverser = new NodeTraverser;
26 $traverser->addVisitor($visitor);
27 $traverser->traverse($nodes);
28
29 return $visitor->getFoundNodes();
30 }
31
32 /**
33 * Find all nodes that are instances of a certain class.
34 *
35 * @param Node|Node[] $nodes Single node or array of nodes to search in
36 * @param string $class Class name
37 *
38 * @return Node[] Found nodes (all instances of $class)
39 */
40 public function findInstanceOf($nodes, string $class) : array {
41 return $this->find($nodes, function ($node) use ($class) {
42 return $node instanceof $class;
43 });
44 }
45
46 /**
47 * Find first node satisfying a filter callback.
48 *
49 * @param Node|Node[] $nodes Single node or array of nodes to search in
50 * @param callable $filter Filter callback: function(Node $node) : bool
51 *
52 * @return null|Node Found node (or null if none found)
53 */
54 public function findFirst($nodes, callable $filter) {
55 if (!is_array($nodes)) {
56 $nodes = [$nodes];
57 }
58
59 $visitor = new FirstFindingVisitor($filter);
60
61 $traverser = new NodeTraverser;
62 $traverser->addVisitor($visitor);
63 $traverser->traverse($nodes);
64
65 return $visitor->getFoundNode();
66 }
67
68 /**
69 * Find first node that is an instance of a certain class.
70 *
71 * @param Node|Node[] $nodes Single node or array of nodes to search in
72 * @param string $class Class name
73 *
74 * @return null|Node Found node, which is an instance of $class (or null if none found)
75 */
76 public function findFirstInstanceOf($nodes, string $class) {
77 return $this->findFirst($nodes, function ($node) use ($class) {
78 return $node instanceof $class;
79 });
80 }
81 }
82