public function Twig_Node_Expression_GetAttr::compile in Zircon Profile 8.0
Same name and namespace in other branches
- 8 vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php \Twig_Node_Expression_GetAttr::compile()
Compiles the node to PHP.
Parameters
Twig_Compiler $compiler A Twig_Compiler instance:
Overrides Twig_Node::compile
File
- vendor/
twig/ twig/ lib/ Twig/ Node/ Expression/ GetAttr.php, line 19
Class
Code
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'));
// 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 || 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(')');
}