Completed
Push — master ( aad334...cf8ab0 )
by Jérémy
01:58
created

RendererFactory::registerRenderer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace JDecool\JsonFeed\Writer;
4
5
use InvalidArgumentException;
6
7
class RendererFactory
8
{
9
    const VERSION_1 = '1.0';
10
11
    private $renderers;
12
13
    /**
14
     * Constructor
15
     */
16
    public function __construct()
17
    {
18
        $this->renderers = [];
19
    }
20
21
    /**
22
     * Create specific renderer
23
     *
24
     * @param string $version
25
     * @return Version1\Renderer
26
     */
27
    public function createRenderer($version = self::VERSION_1)
28
    {
29
        if (isset($this->renderers[$version])) {
30
            return $this->renderers[$version];
31
        }
32
33
        switch ($version) {
34
            case self::VERSION_1:
35
                return new Version1\Renderer();
36
        }
37
38
        throw new InvalidArgumentException(sprintf('Unknow version "%s".', $version));
39
    }
40
41
    /**
42
     * Register a custom renderer
43
     *
44
     * @param string $key
45
     * @param RendererInterface $renderer
46
     * @return RendererFactory
47
     */
48
    public function registerRenderer($key, RendererInterface $renderer)
49
    {
50
        $this->renderers[$key] = $renderer;
51
52
        return $this;
53
    }
54
}
55