Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / config / Definition / VariableNode.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 value of variable type in the config tree.
18  *
19  * This node is intended for values of arbitrary type.
20  * Any PHP type is accepted as a value.
21  *
22  * @author Jeremy Mikola <jmikola@gmail.com>
23  */
24 class VariableNode extends BaseNode implements PrototypeNodeInterface
25 {
26     protected $defaultValueSet = false;
27     protected $defaultValue;
28     protected $allowEmptyValue = true;
29
30     public function setDefaultValue($value)
31     {
32         $this->defaultValueSet = true;
33         $this->defaultValue = $value;
34     }
35
36     /**
37      * {@inheritdoc}
38      */
39     public function hasDefaultValue()
40     {
41         return $this->defaultValueSet;
42     }
43
44     /**
45      * {@inheritdoc}
46      */
47     public function getDefaultValue()
48     {
49         $v = $this->defaultValue;
50
51         return $v instanceof \Closure ? $v() : $v;
52     }
53
54     /**
55      * Sets if this node is allowed to have an empty value.
56      *
57      * @param bool $boolean True if this entity will accept empty values
58      */
59     public function setAllowEmptyValue($boolean)
60     {
61         $this->allowEmptyValue = (bool) $boolean;
62     }
63
64     /**
65      * {@inheritdoc}
66      */
67     public function setName($name)
68     {
69         $this->name = $name;
70     }
71
72     /**
73      * {@inheritdoc}
74      */
75     protected function validateType($value)
76     {
77     }
78
79     /**
80      * {@inheritdoc}
81      */
82     protected function finalizeValue($value)
83     {
84         if (!$this->allowEmptyValue && $this->isValueEmpty($value)) {
85             $ex = new InvalidConfigurationException(sprintf(
86                 'The path "%s" cannot contain an empty value, but got %s.',
87                 $this->getPath(),
88                 json_encode($value)
89             ));
90             if ($hint = $this->getInfo()) {
91                 $ex->addHint($hint);
92             }
93             $ex->setPath($this->getPath());
94
95             throw $ex;
96         }
97
98         return $value;
99     }
100
101     /**
102      * {@inheritdoc}
103      */
104     protected function normalizeValue($value)
105     {
106         return $value;
107     }
108
109     /**
110      * {@inheritdoc}
111      */
112     protected function mergeValues($leftSide, $rightSide)
113     {
114         return $rightSide;
115     }
116
117     /**
118      * Evaluates if the given value is to be treated as empty.
119      *
120      * By default, PHP's empty() function is used to test for emptiness. This
121      * method may be overridden by subtypes to better match their understanding
122      * of empty data.
123      *
124      * @param mixed $value
125      *
126      * @return bool
127      */
128     protected function isValueEmpty($value)
129     {
130         return empty($value);
131     }
132 }