Completed
Push — master ( a1d3b0...f47b8c )
by Nikola
02:43
created

ParametrizedObjectConfig   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 2
dl 0
loc 48
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A fromArray() 0 6 1
A defaults() 0 7 1
A validate() 0 5 1
A getName() 0 4 1
A getParameters() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MonologFactory\Config;
6
7
class ParametrizedObjectConfig extends BaseConfig
8
{
9
    public const NAME = 'name';
10
    public const PARAMETERS = 'params';
11
12
    /** @var string */
13
    protected $name;
14
15
    /** @var array */
16
    protected $parameters;
17
18 9
    protected function __construct(string $name, array $parameters)
19
    {
20 9
        $this->name = $name;
21 9
        $this->parameters = $parameters;
22 9
    }
23
24 5
    public static function fromArray(array $config)
25
    {
26 5
        $config = self::filter($config);
27
28 5
        return new static($config[self::NAME], $config[self::PARAMETERS]);
29
    }
30
31 10
    protected static function defaults(): array
32
    {
33
        return [
34 10
            self::NAME => '',
35 10
            self::PARAMETERS => [],
36
        ];
37
    }
38
39 10
    protected static function validate(array $config): void
40
    {
41 10
        ConfigAssertion::notEmptyString($config[self::NAME], "'" . self::NAME . "' is required and cannot be empty");
42 10
        ConfigAssertion::isArray($config[self::PARAMETERS], "'" . self::PARAMETERS . "' must be an array");
43 10
    }
44
45 9
    public function getName(): string
46
    {
47 9
        return $this->name;
48
    }
49
50 9
    public function getParameters(): array
51
    {
52 9
        return $this->parameters;
53
    }
54
}
55