Passed
Push — master ( a22205...112e67 )
by Gabriel
04:04 queued 13s
created

HasRendererTrait::__toString()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 9
ccs 0
cts 6
cp 0
rs 10
cc 2
nc 2
nop 0
crap 6
1
<?php
2
3
namespace Nip\Form\Traits;
4
5
use Nip\Form\Renderer\AbstractRenderer;
6
7
/**
8
 * Trait HasRendererTrait
9
 * @package Nip\Form\Traits
10
 */
11
trait HasRendererTrait
12
{
13
14
    protected $_renderer;
15
16
    /**
17
     * @param $type
18
     * @return $this
19
     */
20 4
    public function setRendererType(string $type)
21
    {
22 4
        $this->setRenderer($this->getNewRenderer($type));
23
24 4
        return $this;
25
    }
26
27
    /**
28
     * @param string $class
29
     */
30
    protected function setRendererClass(string $class)
31
    {
32
        /** @var AbstractRenderer $renderer */
33
        $renderer = new $class();
34
        $renderer->setForm($this);
35
        $this->setRenderer($renderer);
36
    }
37
38
    /**
39
     * @param AbstractRenderer $renderer
40
     */
41 4
    public function setRenderer(AbstractRenderer $renderer)
42
    {
43 4
        $this->_renderer = $renderer;
44 4
    }
45
46
    /**
47
     * @param string $type
48
     * @return AbstractRenderer
49
     */
50 9
    public function getNewRenderer($type = 'basic')
51
    {
52 9
        $name = 'Nip_Form_Renderer_' . ucfirst($type);
53
        /** @var AbstractRenderer $renderer */
54 9
        $renderer = new $name();
55 9
        $renderer->setForm($this);
56
57 9
        return $renderer;
58
    }
59
60
    /**
61
     * @return null|string
62
     */
63
    public function __toString()
64
    {
65
        $backtrace = debug_backtrace();
66
        if ($backtrace[1]['class'] == 'Monolog\Formatter\NormalizerFormatter') {
67
            return null;
68
        }
69
        trigger_error('form __toString', E_USER_WARNING);
70
71
        return $this->render();
72
    }
73
74
    /**
75
     * @return string
76
     */
77
    public function render()
78
    {
79
        return $this->getRenderer()->render();
80
    }
81
82
    /**
83
     * @return AbstractRenderer
84
     */
85 9
    public function getRenderer()
86
    {
87 9
        if (!$this->_renderer) {
88 5
            $this->_renderer = $this->getNewRenderer();
89
        }
90
91 9
        return $this->_renderer;
92
    }
93
}
94