Completed
Push — master ( 9fea99...819409 )
by Carlos C
9s
created

Templates::setDefaultResolver()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
namespace EngineWorks\Templates;
3
4
use Psr\Http\Message\ResponseInterface;
5
6
class Templates
7
{
8
    /** @var Callables */
9
    private $defaultCallables;
10
11
    /** @var Resolver */
12
    private $defaultResolver;
13
14
    /**
15
     * Templates constructor.
16
     *
17
     * @param Callables|null $defaultCallables Default callables object for new objects
18
     * @param Resolver|null $defaultResolver Default resolver object for new objects
19
     */
20 8
    public function __construct(Callables $defaultCallables = null, Resolver $defaultResolver = null)
21
    {
22 8
        $this->setDefaultCallables($defaultCallables);
23 8
        $this->setDefaultResolver($defaultResolver);
24 8
    }
25
26
    /**
27
     * @return Callables|null
28
     */
29 1
    public function getDefaultCallables()
30
    {
31 1
        return $this->defaultCallables;
32
    }
33
34
    /**
35
     * @param Callables $defaultCallables
36
     */
37 8
    public function setDefaultCallables(Callables $defaultCallables = null)
38
    {
39 8
        $this->defaultCallables = $defaultCallables;
40 8
    }
41
42
    /**
43
     * @return Resolver|null
44
     */
45 1
    public function getDefaultResolver()
46
    {
47 1
        return $this->defaultResolver;
48
    }
49
50
    /**
51
     * @param Resolver $defaultResolver
52
     */
53 8
    public function setDefaultResolver(Resolver $defaultResolver = null)
54
    {
55 8
        $this->defaultResolver = $defaultResolver;
56 8
    }
57
58
    /**
59
     * Create a Template passing a Callables object
60
     * If no Callables is provided it try to use the default Callables object
61
     *
62
     * @param Callables|null $callables
63
     * @param Resolver|null $resolver
64
     * @return Template
65
     */
66 7
    public function create(Callables $callables = null, Resolver $resolver = null)
67
    {
68 7
        $callables = $callables ? : $this->defaultCallables;
69 7
        $resolver = $resolver ? : $this->defaultResolver;
70 7
        return new Template($callables, $resolver);
71
    }
72
73
    /**
74
     * Create a template from its frienly name using the specified variables.
75
     *
76
     * @param string $template
77
     * @param array $variables
78
     * @return string
79
     */
80 3
    public function fetch($template, array $variables = [])
81
    {
82 3
        return $this->create()->fetch($template, $variables);
83
    }
84
85
    /**
86
     * Return the response object with the return value of the fetched template
87
     * Use this function as a compatibility method with PSR-7
88
     *
89
     * @param ResponseInterface $response
90
     * @param string $template
91
     * @param array $variables
92
     * @return ResponseInterface
93
     */
94 1
    public function render(ResponseInterface $response, $template, array $variables = [])
95
    {
96 1
        $response->getBody()->write($this->fetch($template, $variables));
97 1
        return $response;
98
    }
99
}
100