Filter::setValue()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
ccs 4
cts 4
cp 1
crap 2
1
<?php
2
3
namespace kalanis\kw_filter;
4
5
6
use Traversable;
7
8
9
/**
10
 * Class Filter
11
 * @package kalanis\kw_filter
12
 * Filter for selecting wanted items - structure
13
 */
14
class Filter extends AFilterEntry implements Interfaces\IFilter
15
{
16
    protected static $relations = [
17
        self::RELATION_EVERYTHING,
18
        self::RELATION_ANYTHING,
19
    ];
20
21
    /** @var Interfaces\IFilter[]|Interfaces\IFilterEntry[] */
22
    protected $entries = [];
23
    /** @var string */
24
    protected $relation = self::RELATION_EVERYTHING;
25
26 4
    public function getEntries(): Traversable
27
    {
28 4
        yield from $this->entries;
29 4
    }
30
31 1
    public function setValue($value): Interfaces\IFilterEntry
32
    {
33 1
        if ($value instanceof Interfaces\IFilterEntry) {
34 1
            $this->addFilter($value);
35
        }
36 1
        return $this;
37
    }
38
39 2
    public function getValue()
40
    {
41 2
        return $this->entries;
42
    }
43
44 4
    public function addFilter(Interfaces\IFilterEntry $filter): Interfaces\IFilter
45
    {
46 4
        $this->entries[] = $filter;
47 4
        return $this;
48
    }
49
50 1
    public function remove(string $inputKey): Interfaces\IFilter
51
    {
52 1
        foreach ($this->entries as $index => $entry) {
53 1
            if ($entry->getKey() == $inputKey) {
54 1
                unset($this->entries[$index]);
55
            }
56
        }
57 1
        return $this;
58
    }
59
60 2
    public function clear(): Interfaces\IFilter
61
    {
62 2
        $this->entries = [];
63 2
        return $this;
64
    }
65
66 1
    public function getDefaultItem(): Interfaces\IFilterEntry
67
    {
68 1
        return new FilterEntry();
69
    }
70
}
71