]>
Commit | Line | Data |
---|---|---|
a4565e88 NL |
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 | } |