PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.5.1
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.5.1
0.5.7 0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.9 0.4.8 0.4.7 0.4.6 trunk 0.0.1 0.0.2 0.2.8 0.2.9 0.3.0 0.3.1 0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 All 33 releases
code-engine / vendor / nikic / php-parser / lib / PhpParser / NodeVisitor / FirstFindingVisitor.php

FirstFindingVisitor.php in Code Engine – PHP Snippets, AI Functions & Automation for WordPress 0.5.1, at vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php

50 lines 1.2 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\NodeVisitor;
4
5 use PhpParser\Node;
6 use PhpParser\NodeVisitor;
7 use PhpParser\NodeVisitorAbstract;
8
9 /**
10 * This visitor can be used to find the first node satisfying some criterion determined by
11 * a filter callback.
12 */
13 class FirstFindingVisitor extends NodeVisitorAbstract {
14 /** @var callable Filter callback */
15 protected $filterCallback;
16 /** @var null|Node Found node */
17 protected ?Node $foundNode;
18
19 public function __construct(callable $filterCallback) {
20 $this->filterCallback = $filterCallback;
21 }
22
23 /**
24 * Get found node satisfying the filter callback.
25 *
26 * Returns null if no node satisfies the filter callback.
27 *
28 * @return null|Node Found node (or null if not found)
29 */
30 public function getFoundNode(): ?Node {
31 return $this->foundNode;
32 }
33
34 public function beforeTraverse(array $nodes): ?array {
35 $this->foundNode = null;
36
37 return null;
38 }
39
40 public function enterNode(Node $node) {
41 $filterCallback = $this->filterCallback;
42 if ($filterCallback($node)) {
43 $this->foundNode = $node;
44 return NodeVisitor::STOP_TRAVERSAL;
45 }
46
47 return null;
48 }
49 }
50