Passed
Pull Request — master (#19)
by Rustam
02:41
created

Message::context()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 7
ccs 4
cts 4
cp 1
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Profiler;
6
7
use Psr\Log\InvalidArgumentException;
8
use Psr\Log\LoggerTrait;
9
use Psr\Log\LogLevel;
10
11
/**
12
 * Message is a data object that stores log message data.
13
 */
14
final class Message
15
{
16
    /**
17
     * @var string Log message level.
18
     *
19
     * @see LogLevel See constants for valid level names.
20
     */
21
    private string $level;
22
23
    /**
24
     * @var string Log message.
25
     */
26
    private string $message;
27
28
    /**
29
     * @var array Log message context.
30
     *
31
     * Message context has a following keys:
32
     *
33
     * - category: string, message category.
34
     * - memory: int, memory usage in bytes, obtained by `memory_get_usage()`.
35
     * - time: float, message timestamp obtained by microtime(true).
36
     * - trace: array, debug backtrace, contains the application code call stacks.
37
     */
38
    private array $context;
39
40
    /**
41
     * @param mixed $level Log message level.
42
     * @param mixed $message Log message.
43
     * @param array $context Log message context.
44
     *
45
     * @throws InvalidArgumentException for invalid log message level.
46
     *
47
     * @see LoggerTrait::log()
48
     * @see LogLevel
49
     */
50 12
    public function __construct($level, string $message, array $context = [])
51
    {
52 12
        $this->level = $level;
53 12
        $this->message = $message;
54 12
        $this->context = $context;
55 12
    }
56
57
    /**
58
     * Gets a log message level.
59
     *
60
     * @return string Log message level.
61
     */
62 4
    public function level(): string
63
    {
64 4
        return $this->level;
65
    }
66
67
    /**
68
     * Gets a log message.
69
     *
70
     * @return string Log message.
71
     */
72 9
    public function message(): string
73
    {
74 9
        return $this->message;
75
    }
76
77
    /**
78
     * Returns a value of the context parameter for the specified name.
79
     *
80
     * If no name is specified, the entire context is returned.
81
     *
82
     * @param string|null $name The context parameter name.
83
     * @param mixed $default If the context parameter does not exist, the `$default` will be returned.
84
     *
85
     * @return mixed The context parameter value.
86
     */
87 9
    public function context(string $name = null, $default = null)
88
    {
89 9
        if ($name === null) {
90 8
            return $this->context;
91
        }
92
93 4
        return $this->context[$name] ?? $default;
94
    }
95
}
96