Completed
Push — develop ( 141adb...8f70d4 )
by Jaap
05:39
created

LoadProjectDescriptorFromCache::__invoke()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 10
ccs 0
cts 9
cp 0
crap 6
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace phpDocumentor\Application\Stage\Cache;
4
5
use phpDocumentor\Application\Stage\Parser\Payload;
6
use phpDocumentor\Descriptor\Cache\ProjectDescriptorMapper;
7
use Psr\Log\LoggerInterface;
8
use Psr\Log\LogLevel;
9
10
final class LoadProjectDescriptorFromCache
11
{
12
    /**
13
     * @var ProjectDescriptorMapper
14
     */
15
    private $descriptorMapper;
16
17
    /**
18
     * @var LoggerInterface
19
     */
20
    private $logger;
21
22
    public function __construct(ProjectDescriptorMapper $descriptorMapper, LoggerInterface $logger)
23
    {
24
        $this->descriptorMapper = $descriptorMapper;
25
        $this->logger = $logger;
26
    }
27
28
    public function __invoke(Payload $payload)
29
    {
30
        $configuration = $payload->getConfig();
31
        if ($configuration['phpdocumentor']['use-cache']) {
32
            $this->log('Loading project from cache');
33
            $this->descriptorMapper->populate($payload->getBuilder()->getProjectDescriptor());
34
        }
35
36
        return $payload;
37
    }
38
39
    /**
40
     * Dispatches a logging request.
41
     *
42
     * @param string   $priority The logging priority as declared in the LogLevel PSR-3 class.
43
     * @param string[] $parameters
44
     */
45
    private function log(string $message, string $priority = LogLevel::INFO, array $parameters = []): void
46
    {
47
        $this->logger->log($priority, $message, $parameters);
48
    }
49
}
50