public function Twig_Node_Expression_GetAttr::compile

Compiles the node to PHP.

Parameters

Twig_Compiler A Twig_Compiler instance:

Overrides Twig_Node::compile

File

drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php, line 19

Class

Twig_Node_Expression_GetAttr

Code

public function compile(Twig_Compiler $compiler) {
  if (function_exists('twig_template_get_attributes')) {
    $compiler
      ->raw('twig_template_get_attributes($this, ');
  }
  else {
    $compiler
      ->raw('$this->getAttribute(');
  }
  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'));
  if (count($this
    ->getNode('arguments')) || Twig_TemplateInterface::ANY_CALL !== $this
    ->getAttribute('type') || $this
    ->getAttribute('is_defined_test') || $this
    ->getAttribute('ignore_strict_check')) {
    $compiler
      ->raw(', ')
      ->subcompile($this
      ->getNode('arguments'));
    if (Twig_TemplateInterface::ANY_CALL !== $this
      ->getAttribute('type') || $this
      ->getAttribute('is_defined_test') || $this
      ->getAttribute('ignore_strict_check')) {
      $compiler
        ->raw(', ')
        ->repr($this
        ->getAttribute('type'));
    }
    if ($this
      ->getAttribute('is_defined_test') || $this
      ->getAttribute('ignore_strict_check')) {
      $compiler
        ->raw(', ' . ($this
        ->getAttribute('is_defined_test') ? 'true' : 'false'));
    }
    if ($this
      ->getAttribute('ignore_strict_check')) {
      $compiler
        ->raw(', ' . ($this
        ->getAttribute('ignore_strict_check') ? 'true' : 'false'));
    }
  }
  $compiler
    ->raw(')');
}