Yaffs site version 1.1
[yaffs-website] / vendor / symfony / config / Definition / NumericNode.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\Config\Definition;
13
14 use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
15
16 /**
17  * This node represents a numeric value in the config tree.
18  *
19  * @author David Jeanmonod <david.jeanmonod@gmail.com>
20  */
21 class NumericNode extends ScalarNode
22 {
23     protected $min;
24     protected $max;
25
26     public function __construct($name, NodeInterface $parent = null, $min = null, $max = null)
27     {
28         parent::__construct($name, $parent);
29         $this->min = $min;
30         $this->max = $max;
31     }
32
33     /**
34      * {@inheritdoc}
35      */
36     protected function finalizeValue($value)
37     {
38         $value = parent::finalizeValue($value);
39
40         $errorMsg = null;
41         if (isset($this->min) && $value < $this->min) {
42             $errorMsg = sprintf('The value %s is too small for path "%s". Should be greater than or equal to %s', $value, $this->getPath(), $this->min);
43         }
44         if (isset($this->max) && $value > $this->max) {
45             $errorMsg = sprintf('The value %s is too big for path "%s". Should be less than or equal to %s', $value, $this->getPath(), $this->max);
46         }
47         if (isset($errorMsg)) {
48             $ex = new InvalidConfigurationException($errorMsg);
49             $ex->setPath($this->getPath());
50             throw $ex;
51         }
52
53         return $value;
54     }
55
56     /**
57      * {@inheritdoc}
58      */
59     protected function isValueEmpty($value)
60     {
61         // a numeric value cannot be empty
62         return false;
63     }
64 }