MonologLoggerDefinition::load()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
c 0
b 0
f 0
nc 4
nop 0
dl 0
loc 10
rs 10
1
<?php
2
3
namespace pjpawel\LightApi\Component\Logger;
4
5
use Monolog\Logger;
6
use pjpawel\LightApi\Container\Definition\DefinedDefinition;
7
use ReflectionClass;
8
9
class MonologLoggerDefinition extends DefinedDefinition
10
{
11
12
    public string $name;
13
    public array $handlers;
14
    public array $processors;
15
16
    public function __construct(string $name, array $handlers = [], array $processors = [])
17
    {
18
        $this->name = $name;
19
        $this->handlers = $handlers;
20
        $this->processors = $processors;
21
    }
22
23
    public function load(): object
24
    {
25
        $logger = new Logger($this->name);
26
        foreach ($this->handlers as $handler) {
27
            $logger->pushHandler($this->loadObjectFromConfig($handler));
28
        }
29
        foreach ($this->processors as $processor) {
30
            $logger->pushProcessor($this->loadObjectFromConfig($processor));
31
        }
32
        return $logger;
33
    }
34
35
    protected function loadObjectFromConfig(array $config): object
36
    {
37
        if (isset($config['args'])) {
38
            $reflectionHandler = new ReflectionClass($config['class']);
39
            return $reflectionHandler->newInstanceArgs($config['args']);
40
        } else {
41
            return new $config['class']();
42
        }
43
    }
44
}