ZendLogUtils   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 3
dl 0
loc 31
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A extractPsrLogger() 0 17 2
A findPsrWriter() 0 10 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