Completed
Push — master ( a7b092...3bee99 )
by Michaël
02:47
created

ReaderFactory::addReader()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
ccs 0
cts 4
cp 0
rs 9.4285
cc 1
eloc 3
nc 1
nop 2
crap 2
1
<?php
2
3
namespace TextFile\Factory;
4
5
use TextFile\Exception\InvalidReaderException;
6
use TextFile\Exception\InvalidWriterException;
7
use TextFile\Reader\ReaderInterface;
8
use TextFile\Walker\WalkerInterface;
9
10
/**
11
 * Class ReaderFactory
12
 *
13
 * @package TextFile\Factory
14
 */
15
class ReaderFactory
16
{
17
    /**
18
     * @var ReaderInterface[]
19
     */
20
    protected $readers = [];
21
22
    /**
23
     * @param string          $readerClass
24
     * @param WalkerInterface $walker
25
     *
26
     * @return ReaderInterface
27
     * @throws InvalidReaderException
28
     */
29 3
    public function createReader($readerClass, WalkerInterface $walker)
30
    {
31 3
        $walkerClassName = get_class($walker);
32
33 3
        if (isset($this->readers[$readerClass][$walkerClassName])) {
34 1
            return $this->readers[$readerClass][$walkerClassName];
35
        }
36
37 3
        if (!isset(class_implements($readerClass)[ReaderInterface::class])) {
38 1
            throw new InvalidReaderException();
39
        }
40
41 2
        $this->readers[$readerClass][$walkerClassName] = new $readerClass($walker);
42
43 2
        return $this->readers[$readerClass][$walkerClassName];
44
    }
45
}
46