Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
NodeVisitorFirstClass
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 enterNode
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 getClassNode
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php declare(strict_types = 1);
2/**
3 * @author: Doug Wilbourne (dougwilbourne@gmail.com)
4 * @version 1.0
5 */
6
7namespace pvc\parser\php\node_visitors;
8
9use PhpParser\Node;
10use PhpParser\Node\Stmt\Class_;
11use PhpParser\NodeTraverser;
12use PhpParser\NodeVisitorAbstract;
13
14/**
15 * NodeVisitorFirstClass finds and stores the first Class_ node from the parse tree (abstract syntax tree).
16 *
17 * This class is designed to work in the context of the PhpParser (@see nikic/php-parser).
18 *
19 * Class NodeVisitorFirstClass
20 */
21class NodeVisitorFirstClass extends NodeVisitorAbstract
22{
23    /**
24     * @var Class_|null
25     */
26    protected ?Class_ $classNode;
27
28    /**
29     * @function enterNode
30     * @param Node $node
31     * @return int|Node|void|null
32     */
33    public function enterNode($node)
34    {
35        if ($node instanceof Class_) {
36            $this->classNode = $node;
37            return NodeTraverser::STOP_TRAVERSAL;
38        }
39        return;
40    }
41
42    /**
43     * @function getClassNode
44     * @return Class_|null
45     */
46    public function getClassNode(): ?Class_
47    {
48        return $this->classNode ?? null;
49    }
50}