Completed
Push — master ( 6b5051...d13ea0 )
by Alexander
15:24
created

PhpTemplateRenderer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Test Coverage

Coverage 92.86%

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 4
eloc 15
dl 0
loc 22
ccs 13
cts 14
cp 0.9286
rs 10
c 3
b 1
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A render() 0 20 4
1
<?php
2
namespace Yiisoft\View;
3
4
class PhpTemplateRenderer implements TemplateRendererInterface
5
{
6 36
    public function render(View $view, string $template, array $params): string
7
    {
8
        $renderer = function () use ($template, $params) {
9 36
            extract($params, EXTR_OVERWRITE);
10 36
            require $template;
11 36
        };
12
13 36
        $obInitialLevel = ob_get_level();
14 36
        ob_start();
15 36
        ob_implicit_flush(0);
16
        try {
17 36
            $renderer->bindTo($view)();
18 36
            return ob_get_clean();
19 1
        } catch (\Throwable $e) {
20 1
            while (ob_get_level() > $obInitialLevel) {
21 1
                if (!@ob_end_clean()) {
22
                    ob_clean();
23
                }
24
            }
25 1
            throw $e;
26
        }
27
    }
28
}
29