db backup prior to drupal security update
[yaffs-website] / vendor / symfony / expression-language / Node / ConditionalNode.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
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 namespace Symfony\Component\ExpressionLanguage\Node;
13
14 use Symfony\Component\ExpressionLanguage\Compiler;
15
16 /**
17  * @author Fabien Potencier <fabien@symfony.com>
18  *
19  * @internal
20  */
21 class ConditionalNode extends Node
22 {
23     public function __construct(Node $expr1, Node $expr2, Node $expr3)
24     {
25         parent::__construct(
26             array('expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3)
27         );
28     }
29
30     public function compile(Compiler $compiler)
31     {
32         $compiler
33             ->raw('((')
34             ->compile($this->nodes['expr1'])
35             ->raw(') ? (')
36             ->compile($this->nodes['expr2'])
37             ->raw(') : (')
38             ->compile($this->nodes['expr3'])
39             ->raw('))')
40         ;
41     }
42
43     public function evaluate($functions, $values)
44     {
45         if ($this->nodes['expr1']->evaluate($functions, $values)) {
46             return $this->nodes['expr2']->evaluate($functions, $values);
47         }
48
49         return $this->nodes['expr3']->evaluate($functions, $values);
50     }
51 }