MonologLoggerDefinition   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 18
c 0
b 0
f 0
dl 0
loc 33
rs 10
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A load() 0 10 3
A loadObjectFromConfig() 0 7 2
A __construct() 0 5 1
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
}