Completed
Push — master ( d66148...249642 )
by Bocharsky
02:35
created

FileNamingResolver   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 5
c 4
b 0
f 0
lcom 1
cbo 1
dl 0
loc 57
ccs 17
cts 17
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A resolveName() 0 14 2
A setNamingStrategy() 0 6 1
A getNamingStrategy() 0 4 1
1
<?php
2
3
namespace FileNamingResolver;
4
5
use FileNamingResolver\NamingStrategy\NamingStrategyInterface;
6
7
/**
8
 * @author Victor Bocharsky <[email protected]>
9
 */
10
class FileNamingResolver
11
{
12
    /**
13
     * @var NamingStrategyInterface
14
     */
15
    private $namingStrategy;
16
17
    /**
18
     * @param NamingStrategyInterface $namingStrategy
19
     */
20 3
    public function __construct(NamingStrategyInterface $namingStrategy)
21
    {
22 3
        $this->setNamingStrategy($namingStrategy);
23 3
    }
24
25
    /**
26
     * @param FileInfo $srcFileInfo The source FileInfo
27
     *
28
     * @return FileInfo The destination FileInfo
29
     *
30
     * @throws \RuntimeException If specified naming strategy returns not FileNamingResolver\FileInfo instance
31
     */
32 2
    public function resolveName(FileInfo $srcFileInfo)
33
    {
34 2
        $dstFileInfo = $this->namingStrategy->provideName($srcFileInfo);
35 2
        if (!$dstFileInfo instanceof FileInfo) {
36 1
            throw new \RuntimeException(
37 1
                sprintf(
38 1
                    'Specified naming strategy should return an instance of "%s" class',
39
                    '\FileNamingResolver\FileInfo'
40 1
                )
41 1
            );
42
        }
43
44 1
        return $dstFileInfo;
45
    }
46
47
    /**
48
     * @param NamingStrategyInterface $namingStrategy
49
     *
50
     * @return $this
51
     */
52 3
    public function setNamingStrategy(NamingStrategyInterface $namingStrategy)
53
    {
54 3
        $this->namingStrategy = $namingStrategy;
55
56 3
        return $this;
57
    }
58
59
    /**
60
     * @return NamingStrategyInterface
61
     */
62 1
    public function getNamingStrategy()
63
    {
64 1
        return $this->namingStrategy;
65
    }
66
}
67