ArrayDefinition   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 53
rs 10
c 0
b 0
f 0
wmc 8

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A isRecursive() 0 3 1
A getConcrete() 0 15 4
A recursive() 0 4 1
A getValues() 0 3 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Habemus\Definition\Build;
5
6
use Habemus\Definition\Definition;
7
use Habemus\Definition\Identifiable\IdentifiableTrait;
8
use Habemus\Definition\Sharing\Shareable;
9
use Habemus\Definition\Sharing\ShareableTrait;
10
use Habemus\Definition\Tag\Taggable;
11
use Habemus\Definition\Tag\TaggableTrait;
12
use Psr\Container\ContainerInterface;
13
14
class ArrayDefinition implements Definition, Shareable, Taggable
15
{
16
    use IdentifiableTrait;
17
    use ShareableTrait;
18
    use TaggableTrait;
19
20
    /**
21
     * @var array
22
     */
23
    protected $values;
24
25
    /**
26
     * @var bool
27
     */
28
    protected $recursive;
29
30
    public function __construct(array $values, bool $recursive = false)
31
    {
32
        $this->values = $values;
33
        $this->recursive = $recursive;
34
    }
35
36
    public function recursive(bool $recursive): self
37
    {
38
        $this->recursive = $recursive;
39
        return $this;
40
    }
41
42
    public function getValues(): array
43
    {
44
        return $this->values;
45
    }
46
47
    public function isRecursive(): bool
48
    {
49
        return $this->recursive;
50
    }
51
52
    public function getConcrete(ContainerInterface $container): array
53
    {
54
        $values = $this->values;
55
56
        if ($this->recursive) {
57
            array_walk_recursive($values, function (&$item) use ($container) {
58
                $item = $item instanceof ReferenceDefinition ? $container->get($item->id()) : $item;
59
            });
60
        } else {
61
            array_walk($values, function (&$item) use ($container) {
62
                $item = $item instanceof ReferenceDefinition ? $container->get($item->id()) : $item;
63
            });
64
        }
65
66
        return $values;
67
    }
68
}
69