0 follower

Final Class Yiisoft\View\PhpTemplateRenderer

InheritanceYiisoft\View\PhpTemplateRenderer
ImplementsYiisoft\View\TemplateRendererInterface

PhpTemplateRenderer renders the PHP views.

Public Methods

Hide inherited methods

Method Description Defined By
render() Yiisoft\View\PhpTemplateRenderer

Method Details

Hide inherited methods

render() public method

public string render ( Yiisoft\View\ViewInterface $view, string $template, array $parameters )
$view Yiisoft\View\ViewInterface
$template string
$parameters array

                public function render(ViewInterface $view, string $template, array $parameters): string
{
    $renderer = function (): void {
        /** @psalm-suppress MixedArgument, PossiblyFalseArgument */
        extract(func_get_arg(1), EXTR_OVERWRITE);
        /** @psalm-suppress UnresolvableInclude */
        require func_get_arg(0);
    };
    $obInitialLevel = ob_get_level();
    ob_start();
    ob_implicit_flush(false);
    try {
        /** @psalm-suppress PossiblyInvalidFunctionCall,PossiblyNullFunctionCall */
        $renderer->bindTo($view)($template, $parameters);
        /**
         * @var string We assume that in this case active output buffer is always existed, so `ob_get_clean()`
         * returns a string.
         */
        return ob_get_clean();
    } catch (Throwable $e) {
        while (ob_get_level() > $obInitialLevel) {
            ob_end_clean();
        }
        throw $e;
    }
}