Configuration Symfony2树生成器-方法canBeUnset()的作用是什么?
来自Configuration Symfony2树生成器-方法canBeUnset()的作用是什么?,configuration,symfony,Configuration,Symfony,来自Symfony\Bundle\FrameworkBundle\DependencyInjection\Configuration的上述代码片段的第5行使用了方法canBeUnset()。我不知道这是怎么回事,因为如果我移除它,它似乎什么都没做。我正在努力理解我自己的捆绑包的语义配置。遵循代码,您可以在Symfony/Component/Config/definition/Builder/ArrayNodeDefinition类中找到此方法的定义 /** *设置是否可以取消设置节点。 * *@
Symfony\Bundle\FrameworkBundle\DependencyInjection\Configuration
的上述代码片段的第5行使用了方法canBeUnset()
。我不知道这是怎么回事,因为如果我移除它,它似乎什么都没做。我正在努力理解我自己的捆绑包的语义配置。遵循代码,您可以在Symfony/Component/Config/definition/Builder/ArrayNodeDefinition
类中找到此方法的定义
/**
*设置是否可以取消设置节点。
*
*@param Boolean$allow
*
*@return ArrayNodeDefinition
*/
公共函数可以取消设置($allow=true)
{
$this->merge()->allowUnset($allow);
退还$this;
}
这将传递给处理配置合并的MergeBuilder(Symfony/Component/Config/Definition/Builder/MergeBuilder
)
/**
*设置是否可以取消设置节点。
*
*@param Boolean$allow
*
*@return合并生成器
*/
公共函数allowUnset($allow=true)
{
$this->allowFalse=$allow;
退还$this;
}
因此,我的理解是,该方法定义了,如果在合并配置时可以取消设置配置值,以防覆盖配置不支持该值。不过,我必须进行测试,以找出不允许取消设置时的行为,但我猜它会抛出一个关于缺少配置值的异常,就像
isRequired
但是如何取消设置配置值?例如,framework.profiler
在config_dev.yml
中设置,而config_test.yml
包括config_dev.yml
。只有在没有这样的配置键时才会禁用探查器framework.profiler
。那我怎么才能解除它呢?将其设置为{}
或~
无效。(Symfony 2.1,我知道这可以在2.2中使用framework.profiler.enabled
)来完成。要实际取消设置值,请使用form:false
({}
和~
不会取消设置)。
$rootNode
->children()
->arrayNode('form')
->info('form configuration')
->canBeUnset()
->treatNullLike(array('enabled' => true))
->treatTrueLike(array('enabled' => true))
->children()
->booleanNode('enabled')->defaultTrue()->end()
->end()
->end()