Passed
Pull Request — master (#75)
by Alexander
03:54
created

PhpTemplateRenderer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

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

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
    public function render(View $view, string $template, array $params): string
10
    {
11
        $renderer = function () {
12
            extract(func_get_arg(1), EXTR_OVERWRITE);
13
            require func_get_arg(0);
14
        };
15
16
        $obInitialLevel = ob_get_level();
17
        ob_start();
18
        ob_implicit_flush(0);
19
        try {
20
            $renderer->bindTo($view)($template, $params);
21
            return ob_get_clean();
22
        } catch (\Throwable $e) {
23
            while (ob_get_level() > $obInitialLevel) {
24
                if (!@ob_end_clean()) {
25
                    ob_clean();
26
                }
27
            }
28
            throw $e;
29
        }
30
    }
31
}
32