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\Test; 13 14use Twig\Compiler; 15use Twig\Node\Expression\TestExpression; 16 17/** 18 * Checks if a variable is the exact same value as a constant. 19 * 20 * {% if post.status is constant('Post::PUBLISHED') %} 21 * the status attribute is exactly the same as Post::PUBLISHED 22 * {% endif %} 23 * 24 * @author Fabien Potencier <fabien@symfony.com> 25 */ 26class ConstantTest extends TestExpression 27{ 28 public function compile(Compiler $compiler) 29 { 30 $compiler 31 ->raw('(') 32 ->subcompile($this->getNode('node')) 33 ->raw(' === constant(') 34 ; 35 36 if ($this->getNode('arguments')->hasNode(1)) { 37 $compiler 38 ->raw('get_class(') 39 ->subcompile($this->getNode('arguments')->getNode(1)) 40 ->raw(')."::".') 41 ; 42 } 43 44 $compiler 45 ->subcompile($this->getNode('arguments')->getNode(0)) 46 ->raw('))') 47 ; 48 } 49} 50 51class_alias('Twig\Node\Expression\Test\ConstantTest', 'Twig_Node_Expression_Test_Constant'); 52