Passed
Push — master ( 5bb09d...f10a02 )
by 世昌
01:51
created

Debug::strtr()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
namespace nebula\component\debug;
3
4
use nebula\component\debug\Caller;
5
use nebula\component\debug\ConfigTrait;
6
use nebula\component\debug\ConfigInterface;
7
use nebula\component\debug\log\LoggerTrait;
8
use nebula\component\debug\attach\DumpTrait;
9
use nebula\component\debug\attach\AttachTrait;
10
use nebula\component\debug\log\LoggerInterface;
11
use nebula\component\debug\attach\DumpInterface;
12
use nebula\component\debug\log\LoggerAwareTrait;
13
use nebula\component\debug\attach\AttachInterface;
14
use nebula\component\debug\log\LoggerAwareInterface;
15
16
class Debug implements LoggerInterface, LoggerAwareInterface, DumpInterface, AttachInterface, ConfigInterface
17
{
18
    use LoggerTrait,LoggerAwareTrait,DumpTrait,AttachTrait,ConfigTrait;
19
20
    
21
22
    public function log(string $level, string $message, array $context = [])
23
    {
24
        $attribute = [];
25
        $attribute['message'] = $this->strtr($message, $context);
26
        $attribute['level'] = $level;
27
        $caller = new Caller(debug_backtrace(), [__DIR__]);
28
        $trace = $caller->getCallerTrace();
29
        $attribute['file'] = $trace['file'];
30
        $attribute['line'] = $trace['line'];
31
        
32
        $this->logger->log($level, $this->interpolate($this->getConfig('log-format'), $context, $attribute), []);
33
    }
34
35
    public function getDefaultConfig():array
36
    {
37
        return [
38
            'log-format' => '%time-format% - %memory-format% [%level%] %file%:%line% %message%',
39
        ];
40
    }
41
42
    public function strtr(string $message, array $context)
43
    {
44
        $replace = [];
45
        foreach ($context as $key => $val) {
46
            $replace['{' . $key . '}'] = $val;
47
        }
48
        return strtr($message, $replace);
49
    }
50
}
51