Passed
Pull Request — master (#41)
by gt9000
02:23
created

LoggerServiceProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 90%

Importance

Changes 4
Bugs 2 Features 0
Metric Value
c 4
b 2
f 0
dl 0
loc 33
ccs 18
cts 20
cp 0.9
rs 10
wmc 6
lcom 0
cbo 4

1 Method

Rating   Name   Duplication   Size   Complexity  
B register() 0 24 6
1
<?php
2
/**
3
 * @author    jan huang <[email protected]>
4
 * @copyright 2016
5
 *
6
 * @see      https://www.github.com/janhuang
7
 * @see      http://www.fast-d.cn/
8
 */
9
10
namespace FastD\ServiceProvider;
11
12
use FastD\Container\Container;
13
use FastD\Container\ServiceProviderInterface;
14
use Monolog\Formatter\LineFormatter;
15
use Monolog\Handler\AbstractHandler;
16
17
/**
18
 * Class LoggerServiceProvider
19
 */
20
class LoggerServiceProvider implements ServiceProviderInterface
21
{
22
23
    /**
24
     * @param Container $container
25
     * 
26
     * @return mixed
27
     */
28 51
    public function register(Container $container)
29
    {
30 51
        $handlerDefines = config()->get('log', []);
31
32 51
        foreach ($handlerDefines as $handlerDefine) {
33 36
            $handler = array_shift($handlerDefine);
34 36
            $formatter = array_shift($handlerDefine);
35
36 36
            if (is_string($handler)) {
37 36
                $reflection = new \ReflectionClass($handler);
38 36
                $parameters = $reflection->getConstructor()->getParameters();
39 36
                $args = array_pad($handlerDefine, count($parameters), null);
40 36
                $handler = $reflection->newInstanceArgs($args);
41 36
            }
42
43 36
            if ($handler instanceof AbstractHandler) {
44 36
                if (is_null($formatter)) {
45
                    $formatter = new LineFormatter();
46
                }
47 36
                $handler->setFormatter(is_string($formatter) ? new $formatter() : $formatter);
48 36
                logger()->pushHandler($handler);
49 36
            }
50 51
        }
51
    }
52
}