class Twig_Node_Expression_GetAttr in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php \Twig_Node_Expression_GetAttr
Hierarchy
- class \Twig_Node implements Twig_NodeInterface
- class \Twig_Node_Expression
- class \Twig_Node_Expression_GetAttr
- class \Twig_Node_Expression
Expanded class hierarchy of Twig_Node_Expression_GetAttr
File
- vendor/
twig/ twig/ lib/ Twig/ Node/ Expression/ GetAttr.php, line 12
View source
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'));
// 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(')');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function | Gets an attribute value by name. | |
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function |
Overrides Twig_NodeInterface:: |
|
Twig_Node:: |
public | function | Gets a node by name. | |
Twig_Node:: |
public | function |
Overrides Twig_NodeInterface:: |
|
Twig_Node:: |
public | function | Returns true if the attribute is defined. | |
Twig_Node:: |
public | function | Returns true if the node with the given name exists. | |
Twig_Node:: |
public | function | Removes an attribute by name. | |
Twig_Node:: |
public | function | Removes a node by name. | |
Twig_Node:: |
public | function | Sets an attribute by name to a value. | |
Twig_Node:: |
public | function | Sets a node. | |
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function | ||
Twig_Node_Expression_GetAttr:: |
public | function |
Compiles the node to PHP. Overrides Twig_Node:: |
|
Twig_Node_Expression_GetAttr:: |
public | function |
Constructor. Overrides Twig_Node:: |