helpers.php ➔ get_engines()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 0
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of the ICanBoogie package.
5
 *
6
 * (c) Olivier Laviale <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace ICanBoogie\Render;
13
14
/**
15
 * Returns a shared engine collection.
16
 *
17
 * @return EngineCollection
18
 */
19
function get_engines()
20
{
21
    static $engines;
22
23
    if (!$engines)
24
    {
25
        $engines = new EngineCollection([
26
27
            '.phtml' => 'ICanBoogie\Render\PHPEngine'
28
29
        ]);
30
31
        new EngineCollection\AlterEvent($engines);
32
    }
33
34
    return $engines;
35
}
36
37
/**
38
 * Returns a shared template resolver.
39
 *
40
 * @return BasicTemplateResolver
41
 */
42
function get_template_resolver()
43
{
44
    static $template_resolver;
45
46
    if (!$template_resolver)
47
    {
48
        $template_resolver = new BasicTemplateResolver;
49
50
        new TemplateResolver\AlterEvent($template_resolver);
51
    }
52
53
    return $template_resolver;
54
}
55
56
/**
57
 * Returns a shared renderer.
58
 *
59
 * The renderer is created with the shared template resolver and the shared engine collection
60
 * respectively provided by the {@link get_template_resolver()} and {@link get_engines()}
61
 * functions.
62
 *
63
 * @return Renderer
64
 */
65
function get_renderer()
66
{
67
    static $renderer;
68
69
    if (!$renderer)
70
    {
71
        $renderer = new Renderer(get_template_resolver(), get_engines());
72
73
        new Renderer\AlterEvent($renderer);
74
    }
75
76
    return $renderer;
77
}
78
79
/**
80
 * Renders a target or options using the default renderer.
81
 *
82
 * @param mixed $target_or_options The target or options to render.
83
 * @param array $additional_options Additional render options.
84
 *
85
 * @return string
86
 */
87
function render($target_or_options, array $additional_options = [])
88
{
89
    return get_renderer()->render($target_or_options, $additional_options);
90
}
91