Issues (536)

src/Exceptions/DebugTraceableTrait.php (3 issues)

1
<?php
2
3
/**
4
 * This file is part of Blitz PHP framework.
5
 *
6
 * (c) 2022 Dimitri Sitchet Tomkeu <[email protected]>
7
 *
8
 * For the full copyright and license information, please view
9
 * the LICENSE file that was distributed with this source code.
10
 */
11
12
namespace BlitzPHP\Exceptions;
13
14
use Throwable;
15
16
/**
17
 * Ce trait fournit aux exceptions du cadre la possibilité d'identifier
18
 * précisément où l'exception a été déclenchée plutôt qu'instanciée.
19
 *
20
 * Ceci est principalement utilisé pour les exceptions instanciées dans les factories.
21
 */
22
trait DebugTraceableTrait
23
{
24
    /**
25
     * Ajuste le constructeur de l'exception pour assigner le fichier/la ligne à où
26
     * il est réellement déclenché plutôt que d'être instancié.
27
     */
28
    final public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null)
29
    {
30 70
        parent::__construct($message, $code, $previous);
31
32 70
        $trace = $this->getTrace()[0];
0 ignored issues
show
It seems like getTrace() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

32
        $trace = $this->/** @scrutinizer ignore-call */ getTrace()[0];
Loading history...
33
34
        if (isset($trace['class']) && $trace['class'] === static::class) {
35
            [
36
                'line' => $this->line,
0 ignored issues
show
Bug Best Practice introduced by
The property line does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
37
                'file' => $this->file,
0 ignored issues
show
Bug Best Practice introduced by
The property file does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
38 70
            ] = $trace;
39
        }
40
    }
41
42
    /**
43
     * Obtenir le message système traduit
44
     *
45
     * Utilisez une instance de langue non partagée dans les services.
46
     * Si une instance partagée est créée, la langue
47
     * ont les paramètres régionaux actuels, donc même si les utilisateurs appellent
48
     * `$this->request->setLocale()` dans le contrôleur ensuite,
49
     * les paramètres régionaux de la langue ne seront pas modifiés.
50
     */
51
    protected static function lang(string $line, array $args = []): string
52
    {
53 2
        return single_service('translator')->getLine($line, $args);
54
    }
55
}
56