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

PhpTemplateRenderer::render()   A

Complexity

Conditions 4
Paths 7

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 4.0058

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 20
ccs 13
cts 14
cp 0.9286
rs 9.7998
c 0
b 0
f 0
cc 4
nc 7
nop 3
crap 4.0058
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