ErrorListener   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 25
ccs 15
cts 16
cp 0.9375
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A onError() 0 19 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Console;
6
7
use Psr\Log\LoggerInterface;
8
use Symfony\Component\Console\Event\ConsoleErrorEvent;
9
10
use function sprintf;
11
12
final class ErrorListener
13
{
14 2
    public function __construct(private ?LoggerInterface $logger = null)
15
    {
16 2
    }
17
18 2
    public function onError(ConsoleErrorEvent $event): void
19
    {
20 2
        if ($this->logger === null) {
21
            return;
22
        }
23
24 2
        $exception = $event->getError();
25 2
        $command = $event->getCommand();
26
27 2
        $message = sprintf(
28 2
            '%s: %s in %s:%s while running console command "%s".',
29 2
            $exception::class,
30 2
            $exception->getMessage(),
31 2
            $exception->getFile(),
32 2
            $exception->getLine(),
33 2
            $command?->getName() ?? 'unknown',
34 2
        );
35
36 2
        $this->logger->error($message, ['exception' => $exception]);
37
    }
38
}
39