| 1 | <?php | 
|---|
| 2 |  | 
|---|
| 3 | /* | 
|---|
| 4 |  * This file is part of Twig. | 
|---|
| 5 |  * | 
|---|
| 6 |  * (c) 2009 Fabien Potencier | 
|---|
| 7 |  * (c) 2009 Armin Ronacher | 
|---|
| 8 |  * | 
|---|
| 9 |  * For the full copyright and license information, please view the LICENSE | 
|---|
| 10 |  * file that was distributed with this source code. | 
|---|
| 11 |  */ | 
|---|
| 12 | class Twig_Node_Expression_GetAttr extends Twig_Node_Expression | 
|---|
| 13 | { | 
|---|
| 14 |     public function __construct(Twig_Node_Expression $node, Twig_Node_Expression $attribute, Twig_Node_Expression_Array $arguments, $type, $lineno) | 
|---|
| 15 |     { | 
|---|
| 16 |         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); | 
|---|
| 17 |     } | 
|---|
| 18 |  | 
|---|
| 19 |     public function compile(Twig_Compiler $compiler) | 
|---|
| 20 |     { | 
|---|
| 21 |         if (function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) { | 
|---|
| 22 |             $compiler->raw('twig_template_get_attributes($this, '); | 
|---|
| 23 |         } else { | 
|---|
| 24 |             $compiler->raw('$this->getAttribute('); | 
|---|
| 25 |         } | 
|---|
| 26 |  | 
|---|
| 27 |         if ($this->getAttribute('ignore_strict_check')) { | 
|---|
| 28 |             $this->getNode('node')->setAttribute('ignore_strict_check', true); | 
|---|
| 29 |         } | 
|---|
| 30 |  | 
|---|
| 31 |         $compiler->subcompile($this->getNode('node')); | 
|---|
| 32 |  | 
|---|
| 33 |         $compiler->raw(', ')->subcompile($this->getNode('attribute')); | 
|---|
| 34 |  | 
|---|
| 35 |         if (count($this->getNode('arguments')) || Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { | 
|---|
| 36 |             $compiler->raw(', ')->subcompile($this->getNode('arguments')); | 
|---|
| 37 |  | 
|---|
| 38 |             if (Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { | 
|---|
| 39 |                 $compiler->raw(', ')->repr($this->getAttribute('type')); | 
|---|
| 40 |             } | 
|---|
| 41 |  | 
|---|
| 42 |             if ($this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { | 
|---|
| 43 |                 $compiler->raw(', '.($this->getAttribute('is_defined_test') ? 'true' : 'false')); | 
|---|
| 44 |             } | 
|---|
| 45 |  | 
|---|
| 46 |             if ($this->getAttribute('ignore_strict_check')) { | 
|---|
| 47 |                 $compiler->raw(', '.($this->getAttribute('ignore_strict_check') ? 'true' : 'false')); | 
|---|
| 48 |             } | 
|---|
| 49 |         } | 
|---|
| 50 |  | 
|---|
| 51 |         $compiler->raw(')'); | 
|---|
| 52 |     } | 
|---|
| 53 | } | 
|---|