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

FileNamingResolver::resolveName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 14
ccs 9
cts 9
cp 1
rs 9.4285
cc 2
eloc 8
nc 2
nop 1
crap 2
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