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(
86 'The path "%s" cannot contain an empty value, but got %s.',
90 if ($hint = $this->getInfo()) {
93 $ex->setPath($this->getPath());
104 protected function normalizeValue($value)
112 protected function mergeValues($leftSide, $rightSide)
118 * Evaluates if the given value is to be treated as empty.
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
124 * @param mixed $value
128 protected function isValueEmpty($value)
130 return empty($value);