Project

General

Profile

1 2 Manuela
<?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
}