ZendLogUtils::findPsrWriter()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 5
cts 5
cp 1
rs 9.9332
c 0
b 0
f 0
cc 3
nc 3
nop 1
crap 3
1
<?php
2
/**
3
 * Polder Knowledge / log-module (https://polderknowledge.com)
4
 *
5
 * @link https://github.com/polderknowledge/log-module for the canonical source repository
6
 * @copyright Copyright (c) 2016-2017 Polder Knowledge (https://polderknowledge.com)
7
 * @license https://github.com/polderknowledge/log-module/blob/master/LICENSE.md MIT
8
 */
9
10
namespace PolderKnowledge\LogModule\Helper;
11
12
use PolderKnowledge\LogModule\Helper\Exception\NoPsrLoggerAvailable;
13
use ReflectionClass;
14
use Zend\Log\Logger;
15
use Zend\Log\Writer\Psr;
16
17
/**
18
 * A helper class that extracts a PSR logger from a Zend Logger.
19
 */
20
final class ZendLogUtils
21
{
22 9
    public static function extractPsrLogger(Logger $logger)
23
    {
24 9
        $writers = $logger->getWriters()->toArray();
25
26 9
        $psrWriter = static::findPsrWriter($writers);
0 ignored issues
show
Comprehensibility introduced by
Since PolderKnowledge\LogModule\Helper\ZendLogUtils is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
27
28 9
        if (!$psrWriter) {
29 3
            throw new NoPsrLoggerAvailable();
30
        }
31
32 6
        $reflectionClass = new ReflectionClass($psrWriter);
33
34 6
        $loggerProperty = $reflectionClass->getProperty('logger');
35 6
        $loggerProperty->setAccessible(true);
36
37 6
        return $loggerProperty->getValue($psrWriter);
38
    }
39
40 9
    private static function findPsrWriter(array $writers)
41
    {
42 9
        foreach ($writers as $writer) {
43 6
            if ($writer instanceof Psr) {
44 6
                return $writer;
45
            }
46
        }
47
48 3
        return null;
49
    }
50
}
51