Class yii\twig\Optimizer

Inheritanceyii\twig\Optimizer
ImplementsTwig\NodeVisitor\NodeVisitorInterface
Source Code https://github.com/yiisoft/yii2-twig/blob/master/src/Optimizer.php

Optimizer removes echo before special functions call and injects function name as an argument for the view helper calls.

Method Details

Hide inherited methods

enterNode() public method

public enterNode( \Twig\Node\Node $node, \Twig\Environment $env ):
$node \Twig\Node\Node
$env \Twig\Environment

                public function enterNode(Node $node, Environment $env)
{
    return $node;
}

            
getPriority() public method

public getPriority( ):

                public function getPriority()
{
    return 100;
}

            
leaveNode() public method

public leaveNode( \Twig\Node\Node $node, \Twig\Environment $env ):
$node \Twig\Node\Node
$env \Twig\Environment

                public function leaveNode(Node $node, Environment $env)
{
    if ($node instanceof PrintNode) {
        $expression = $node->getNode('expr');
        if ($expression instanceof FunctionExpression) {
            $name = $expression->getAttribute('name');
            if (preg_match('/^(?:register_.+_asset|use|.+_begin|.+_end)$/', $name)) {
                return new DoNode($expression, $expression->getTemplateLine());
            } elseif (in_array($name, ['begin_page', 'end_page', 'begin_body', 'end_body', 'head'])) {
                $arguments = [
                    new ConstantExpression($name, $expression->getTemplateLine()),
                ];
                if ($expression->hasNode('arguments') && $expression->getNode('arguments') !== null) {
                    foreach ($expression->getNode('arguments') as $key => $value) {
                        if (is_int($key)) {
                            $arguments[] = $value;
                        } else {
                            $arguments[$key] = $value;
                        }
                    }
                }
                $expression->setNode('arguments', new Node($arguments));
                return new DoNode($expression, $expression->getTemplateLine());
            }
        }
    }
    return $node;
}