Passed
Push — master ( c02ff8...8cf6c5 )
by Esteban De La Fuente
06:05
created

LogMessage   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Test Coverage

Coverage 20%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
c 1
b 0
f 0
dl 0
loc 90
ccs 3
cts 15
cp 0.2
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A __toString() 0 15 3
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * LibreDTE: Biblioteca PHP (Núcleo).
7
 * Copyright (C) LibreDTE <https://www.libredte.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de
20
 * GNU junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace libredte\lib\Core\Log;
26
27
/**
28
 * Clase que representa un mensaje del Log.
29
 */
30
class LogMessage
31
{
32
    /**
33
     * Código del error.
34
     *
35
     * @var int
36
     */
37
    public int $code;
38
39
    /**
40
     * Descripción o glosa del error.
41
     *
42
     * @var string|null
43
     */
44
    public ?string $message;
45
46
    /**
47
     * Archivo donde se llamó al log.
48
     *
49
     * @var string|null
50
     */
51
    public ?string $file = null;
52
53
    /**
54
     * Línea del archivo donde se llamó al log.
55
     *
56
     * @var int|null
57
     */
58
    public ?int $line = null;
59
60
    /**
61
     * Método que llamó al log.
62
     *
63
     * @var string|null
64
     */
65
    public ?string $function = null;
66
67
    /**
68
     * Clase del método que llamó al log.
69
     *
70
     * @var string|null
71
     */
72
    public ?string $class = null;
73
74
    /**
75
     * Tipo de llamada (estática o de objeto instanciado).
76
     *
77
     * @var string|null
78
     */
79
    public ?string $type = null;
80
81
    /**
82
     * Contexto adicional del mensaje.
83
     *
84
     * @var array|null
85
     */
86
    public ?array $context = null;
87
88
    /**
89
     * Constructor del mensaje.
90
     *
91
     * @param int $code Código del error.
92
     * @param string|null $message Mensaje del error.
93
     */
94 10
    public function __construct(int $code, ?string $message = null)
95
    {
96 10
        $this->code = $code;
97 10
        $this->message = $message;
98
    }
99
100
    /**
101
     * Método mágico para obtener el mensaje como string a partir del objeto.
102
     *
103
     * @return string Mensaje formateado como string.
104
     */
105
    public function __toString(): string
106
    {
107
        $message = $this->message ?: sprintf('Error código %s', $this->code);
108
        if (!$this->file) {
109
            return $message;
110
        }
111
112
        return sprintf(
113
            '%s (in %s on line %d, called by %s%s%s())',
114
            $message,
115
            $this->file,
116
            $this->line,
117
            $this->class,
118
            $this->type,
119
            $this->function
120
        );
121
    }
122
}
123