Class yii\twig\GetAttr

Inheritanceyii\twig\GetAttr » Twig\Node\Expression\AbstractExpression
Source Code https://github.com/yiisoft/yii2-twig/blob/master/src/GetAttr.php

Public Methods

Hide inherited methods

Method Description Defined By
compile() yii\twig\GetAttr

Method Details

Hide inherited methods

compile() public method

public void compile ( \Twig\Compiler $compiler )
$compiler

                public function compile(Compiler $compiler)
{
    $compiler->raw(Template::class.'::attribute($this->env, $this->getSourceContext(), ');
    if ($this->getAttribute('ignore_strict_check')) {
        $this->getNode('node')->setAttribute('ignore_strict_check', true);
    }
    $compiler->subcompile($this->getNode('node'));
    $compiler->raw(', ')->subcompile($this->getNode('attribute'));
    // only generate optional arguments when needed (to make generated code more readable)
    $needFourth = $this->getAttribute('ignore_strict_check');
    $needThird = $needFourth || $this->getAttribute('is_defined_test');
    $needSecond = $needThird || TwigTemplate::ANY_CALL !== $this->getAttribute('type');
    $needFirst = $needSecond || $this->hasNode('arguments');
    if ($needFirst) {
        if ($this->hasNode('arguments')) {
            $compiler->raw(', ')->subcompile($this->getNode('arguments'));
        } else {
            $compiler->raw(', array()');
        }
    }
    if ($needSecond) {
        $compiler->raw(', ')->repr($this->getAttribute('type'));
    }
    if ($needThird) {
        $compiler->raw(', ')->repr($this->getAttribute('is_defined_test'));
    }
    if ($needFourth) {
        $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check'));
    }
    $compiler->raw(')');
}