Passed
Push — master ( d3a94c...76e109 )
by Valentin
05:50
created

DeclareClass::leaveNode()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Cycle\ORM\Promise\Visitor;
5
6
use PhpParser\Node;
7
use PhpParser\NodeVisitorAbstract;
8
9
/**
10
 * Declare proxy class, add extends and implements declarations
11
 */
12
class DeclareClass extends NodeVisitorAbstract
13
{
14
    /** @var string */
15
    private $name;
16
17
    /** @var string */
18
    private $extends;
19
20
    public function __construct(string $name, string $extends)
21
    {
22
        $this->name = $name;
23
        $this->extends = $extends;
24
    }
25
26
    /**
27
     * {@inheritdoc}
28
     */
29
    public function leaveNode(Node $node)
30
    {
31
        if ($node instanceof Node\Stmt\Class_) {
32
            $node->extends = new Node\Name($this->extends);
33
            $node->name->name = $this->name;
34
        }
35
36
        return null;
37
    }
38
}