1<?php 2 3/* 4 * This file is part of Twig. 5 * 6 * (c) 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 12namespace Twig\Node\Expression; 13 14use Twig\Compiler; 15use Twig\Node\Node; 16 17class TestExpression extends CallExpression 18{ 19 public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) 20 { 21 $nodes = ['node' => $node]; 22 if (null !== $arguments) { 23 $nodes['arguments'] = $arguments; 24 } 25 26 parent::__construct($nodes, ['name' => $name], $lineno); 27 } 28 29 public function compile(Compiler $compiler) 30 { 31 $name = $this->getAttribute('name'); 32 $test = $compiler->getEnvironment()->getTest($name); 33 34 $this->setAttribute('name', $name); 35 $this->setAttribute('type', 'test'); 36 $this->setAttribute('arguments', $test->getArguments()); 37 $this->setAttribute('callable', $test->getCallable()); 38 $this->setAttribute('is_variadic', $test->isVariadic()); 39 40 $this->compileCallable($compiler); 41 } 42} 43 44class_alias('Twig\Node\Expression\TestExpression', 'Twig_Node_Expression_Test'); 45