# Class yii\twig\GetAttr

Inheritance | yii\twig\GetAttr » Twig\Node\Expression\AbstractExpression
Source Code | https://github.com/yiisoft/yii2-twig/blob/master/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 |  |

Source code

                    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(')');
    }