MethodCall.php (1244B)
1 <?php 2 3 /* 4 * This file is part of Twig. 5 * 6 * (c) 2012 Fabien Potencier 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 class Twig_Node_Expression_MethodCall extends Twig_Node_Expression 12 { 13 public function __construct(Twig_Node_Expression $node, $method, Twig_Node_Expression_Array $arguments, $lineno) 14 { 15 parent::__construct(array('node' => $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno); 16 17 if ($node instanceof Twig_Node_Expression_Name) { 18 $node->setAttribute('always_defined', true); 19 } 20 } 21 22 public function compile(Twig_Compiler $compiler) 23 { 24 $compiler 25 ->subcompile($this->getNode('node')) 26 ->raw('->') 27 ->raw($this->getAttribute('method')) 28 ->raw('(') 29 ; 30 $first = true; 31 foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { 32 if (!$first) { 33 $compiler->raw(', '); 34 } 35 $first = false; 36 37 $compiler->subcompile($pair['value']); 38 } 39 $compiler->raw(')'); 40 } 41 }