Passed
Pull Request — master (#68)
by Björn
03:42
created

LocatedSymbolsAndIncludes::setIncludes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace ComposerRequireChecker\DefinedSymbolsLocator;
4
5
use ArrayIterator;
6
use Traversable;
7
8
class LocatedSymbolsAndIncludes
9
{
10
    /**
11
     * @var string[]
12
     */
13
    private $symbols = [];
14
15
    /**
16
     * @var string[]
17
     */
18
    private $includes = [];
19
20
    /**
21
     * @var string[]
22
     */
23
    private $previousIncludes = [];
24
25
    /**
26
     * @return string[]
27
     */
28 1
    public function getSymbols(): array
29
    {
30 1
        return $this->symbols;
31
    }
32
33
    /**
34
     * @return Traversable|string[]
35
     */
36 1
    public function getIncludes(): Traversable
37
    {
38 1
        return new ArrayIterator($this->includes);
39
    }
40
41
    /**
42
     * @param string[] $symbols
43
     * @return LocatedSymbolsAndIncludes
44
     */
45 1
    public function addSymbols(array $symbols): LocatedSymbolsAndIncludes
46
    {
47 1
        $this->symbols = $this->arrayMergeUnique($this->symbols, $symbols);
48 1
        return $this;
49
    }
50
51
    /**
52
     * @param string[] $includes
53
     * @return LocatedSymbolsAndIncludes
54
     */
55 1
    public function setIncludes(array $includes): LocatedSymbolsAndIncludes
56
    {
57 1
        $this->includes = array_diff($includes, $this->previousIncludes);
58 1
        $this->previousIncludes = $this->arrayMergeUnique($this->previousIncludes, [$includes]);
59 1
        return $this;
60
    }
61
62
    /**
63
     * @param array $into
64
     * @param array $add
65
     * @return array
66
     */
67 1
    private function arrayMergeUnique(array $into, array $add): array
68
    {
69 1
        if (empty($add)) {
70
            return $into;
71
        }
72 1
        return array_values(array_unique(array_merge($into, ...$add)));
73
    }
74
}