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

LoadProjectDescriptorFromCache   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 40
ccs 0
cts 18
cp 0
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __invoke() 0 10 2
A log() 0 4 1
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