GetAttr.php in Zircon Profile 8.0
File
vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php
View source
<?php
class Twig_Node_Expression_GetAttr extends Twig_Node_Expression {
public function __construct(Twig_Node_Expression $node, Twig_Node_Expression $attribute, Twig_Node_Expression $arguments = null, $type, $lineno) {
parent::__construct(array(
'node' => $node,
'attribute' => $attribute,
'arguments' => $arguments,
), array(
'type' => $type,
'is_defined_test' => false,
'ignore_strict_check' => false,
'disable_c_ext' => false,
), $lineno);
}
public function compile(Twig_Compiler $compiler) {
if (function_exists('twig_template_get_attributes') && !$this
->getAttribute('disable_c_ext')) {
$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'));
$needFourth = $this
->getAttribute('ignore_strict_check');
$needThird = $needFourth || $this
->getAttribute('is_defined_test');
$needSecond = $needThird || Twig_Template::ANY_CALL !== $this
->getAttribute('type');
$needFirst = $needSecond || null !== $this
->getNode('arguments');
if ($needFirst) {
if (null !== $this
->getNode('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(')');
}
}