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

ReaderFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 3
c 2
b 0
f 1
lcom 1
cbo 1
dl 0
loc 31
ccs 8
cts 8
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A createReader() 0 16 3
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