Passed
Pull Request — master (#6)
by
unknown
02:09
created

FilteredContainer::get()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Everlution\Navigation\Container;
6
7
use Everlution\Navigation\Container\ContainerInterface;
8
use Everlution\Navigation\Filter\ChainFilter;
9
use Everlution\Navigation\Container\FilteredContainerInterface;
10
use Everlution\Navigation\Item\ItemInterface;
11
12
/**
13
 * Class FilteredContainer.
14
 *
15
 * @author Ivan Barlog <[email protected]>
16
 */
17
class FilteredContainer implements ContainerInterface
18
{
19
    /** @var FilteredContainerInterface */
20
    private $container;
21
    /** @var ItemInterface[] */
22
    private $items;
23
24
    public function __construct(FilteredContainerInterface $container)
25
    {
26
        $this->container = $container;
27
    }
28
29
    /**
30
     * @return ItemInterface[]
31
     */
32
    public function getItems(): array
33
    {
34
        if (empty($this->items)) {
35
            $filter = new ChainFilter($this->container->getFilters());
36
            $this->items = $filter->filterItems($this->container)->getItems();
37
        }
38
39
        return $this->items;
40
    }
41
42
    public function get(string $name): ItemInterface
43
    {
44
        return $this->items[$name];
45
    }
46
}
47