Constant.php (1176B)
1 <?php 2 3 /* 4 * This file is part of Twig. 5 * 6 * (c) 2011 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 12 /** 13 * Checks if a variable is the exact same value as a constant. 14 * 15 * <pre> 16 * {% if post.status is constant('Post::PUBLISHED') %} 17 * the status attribute is exactly the same as Post::PUBLISHED 18 * {% endif %} 19 * </pre> 20 * 21 * @author Fabien Potencier <fabien@symfony.com> 22 */ 23 class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test 24 { 25 public function compile(Twig_Compiler $compiler) 26 { 27 $compiler 28 ->raw('(') 29 ->subcompile($this->getNode('node')) 30 ->raw(' === constant(') 31 ; 32 33 if ($this->getNode('arguments')->hasNode(1)) { 34 $compiler 35 ->raw('get_class(') 36 ->subcompile($this->getNode('arguments')->getNode(1)) 37 ->raw(')."::".') 38 ; 39 } 40 41 $compiler 42 ->subcompile($this->getNode('arguments')->getNode(0)) 43 ->raw('))') 44 ; 45 } 46 }