4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Config\Definition;
14 use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
17 * This node represents a value of variable type in the config tree.
19 * This node is intended for values of arbitrary type.
20 * Any PHP type is accepted as a value.
22 * @author Jeremy Mikola <jmikola@gmail.com>
24 class VariableNode extends BaseNode implements PrototypeNodeInterface
26 protected $defaultValueSet = false;
27 protected $defaultValue;
28 protected $allowEmptyValue = true;
30 public function setDefaultValue($value)
32 $this->defaultValueSet = true;
33 $this->defaultValue = $value;
39 public function hasDefaultValue()
41 return $this->defaultValueSet;
47 public function getDefaultValue()
49 $v = $this->defaultValue;
51 return $v instanceof \Closure ? $v() : $v;
55 * Sets if this node is allowed to have an empty value.
57 * @param bool $boolean True if this entity will accept empty values
59 public function setAllowEmptyValue($boolean)
61 $this->allowEmptyValue = (bool) $boolean;
67 public function setName($name)
75 protected function validateType($value)
82 protected function finalizeValue($value)
84 if (!$this->allowEmptyValue && $this->isValueEmpty($value)) {
85 $ex = new InvalidConfigurationException(sprintf('The path "%s" cannot contain an empty value, but got %s.', $this->getPath(), json_encode($value)));
86 if ($hint = $this->getInfo()) {
89 $ex->setPath($this->getPath());
100 protected function normalizeValue($value)
108 protected function mergeValues($leftSide, $rightSide)
114 * Evaluates if the given value is to be treated as empty.
116 * By default, PHP's empty() function is used to test for emptiness. This
117 * method may be overridden by subtypes to better match their understanding
120 * @param mixed $value
124 protected function isValueEmpty($value)
126 return empty($value);