Completed
Push — master ( 584a54...d87057 )
by Jaap
07:08 queued 23s
created

Traverser::traverseArray()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.8333
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace phpDocumentor\Reflection;
6
7
8
use PHPUnit\Framework\TestCase;
9
10
/**
11
 * @coversNothing
12
 */
13
class ModifyBackTraceSafeTest extends TestCase
14
{
15
    public function testBackTraceModificationDoesNotImpactFunctionArguments()
16
    {
17
        $traverser = new Traverser();
18
        $node1 = new Node();
19
        $node1->children[] = new Node();
20
        $node1->children[] = new Node();
21
22
        $traverser->traverse([new Node(), $node1]);
23
    }
24
}
25
26
27
class Node {
28
    public $children = [];
29
}
30
31
class Traverser
32
{
33
    public function traverse(array $nodes)
34
    {
35
        $this->traverseArray($nodes);
36
    }
37
38
    public function traverseArray(array $nodes): array
39
    {
40
        $doNodes = [];
41
42
        foreach ($nodes as &$node) {
43
            $node = $this->callback($node);
44
            $node = $this->traverseNode($node);
45
46
            $doNodes[] = $node;
47
        }
48
49
        return $doNodes;
50
    }
51
52
    public function callback(Node $class) : Node
53
    {
54
        $docblock = <<<DOCBLOCK
55
 /**
56
  * @see sql.php
57
  */
58
DOCBLOCK;
59
60
        $factor = DocBlockFactory::createInstance();
61
62
        $factor->create($docblock);
63
64
        return $class;
65
    }
66
67
    private function traverseNode(Node $node) : Node
68
    {
69
        if ($node->children) {
70
            $this->traverseArray($node->children);
71
        }
72
73
        return $node;
74
    }
75
}
76