Passed
Push — master ( 5542c1...1e8623 )
by Alexander
01:51
created

PhpTemplateRenderer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Test Coverage

Coverage 92.86%

Importance

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

1 Method

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