Templates::getDefaultResolver()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

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