ea17bc78a8
* 2.5: [Form] fixed a maxlength overring on a guessing [Debug] Show only unique class candidates [SecurityBundle] Firewall providers building - code cleaning [Filesystem] symlink use RealPath instead LinkTarget [DependencyInjection] Remove duplicate declaration in PhpDumper terminals are not interactive on Travis Revert "[DependencyInjection] backport perf optim" [WebProfilerBundle] replaced pattern to path attribute in routes definitions. fix phpdoc's alignment Fixed the AuthenticationProviderInterface alignment Fixed the proxy-manager version constraint [FrameworkBundle][Template name] avoid error message for the shortcut notation. [DependencyInjection] perf optim: call dirname() at most 5x [DependencyInjection] backport perf optim Fixed #12845 adding a listener to an event that is currently being dispatched will not result into a fatal error in TraceableEventDispatcher [EventDispatcher] [2.5] Remove possible call_user_func() [2.3] Remove possible call_user_func() Conflicts: src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services11.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services12.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services8.php src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9.php
120 lines
2.5 KiB
PHP
120 lines
2.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Component\Config\Definition;
|
|
|
|
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
|
|
|
|
/**
|
|
* This node represents a value of variable type in the config tree.
|
|
*
|
|
* This node is intended for values of arbitrary type.
|
|
* Any PHP type is accepted as a value.
|
|
*
|
|
* @author Jeremy Mikola <jmikola@gmail.com>
|
|
*/
|
|
class VariableNode extends BaseNode implements PrototypeNodeInterface
|
|
{
|
|
protected $defaultValueSet = false;
|
|
protected $defaultValue;
|
|
protected $allowEmptyValue = true;
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function setDefaultValue($value)
|
|
{
|
|
$this->defaultValueSet = true;
|
|
$this->defaultValue = $value;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function hasDefaultValue()
|
|
{
|
|
return $this->defaultValueSet;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getDefaultValue()
|
|
{
|
|
$v = $this->defaultValue;
|
|
|
|
return $v instanceof \Closure ? $v() : $v;
|
|
}
|
|
|
|
/**
|
|
* Sets if this node is allowed to have an empty value.
|
|
*
|
|
* @param bool $boolean True if this entity will accept empty values.
|
|
*/
|
|
public function setAllowEmptyValue($boolean)
|
|
{
|
|
$this->allowEmptyValue = (bool) $boolean;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function setName($name)
|
|
{
|
|
$this->name = $name;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function validateType($value)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function finalizeValue($value)
|
|
{
|
|
if (!$this->allowEmptyValue && empty($value)) {
|
|
$ex = new InvalidConfigurationException(sprintf(
|
|
'The path "%s" cannot contain an empty value, but got %s.',
|
|
$this->getPath(),
|
|
json_encode($value)
|
|
));
|
|
if ($hint = $this->getInfo()) {
|
|
$ex->addHint($hint);
|
|
}
|
|
$ex->setPath($this->getPath());
|
|
|
|
throw $ex;
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function normalizeValue($value)
|
|
{
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function mergeValues($leftSide, $rightSide)
|
|
{
|
|
return $rightSide;
|
|
}
|
|
}
|