在Symfony Config 组件文档中的定义和处理配置值下,暗示您传递给TreeBuilder
构造函数的根节点名称将被视为处理器传递的配置的根节点,而不是对象本身。
将文件加载到容器中时,似乎确实是以这种方式处理的,但以下代码遵循我理解的文档所描述的内容,但在“foo”下抛出了一个InvalidConfigurationException
声称无法识别的选项“foo”。可用选项是“栏”。在所有当前支持的 Symfony 版本上。
我很困惑;谁能帮我理解这里发生了什么?
class Config implements \Symfony\Component\Config\Definition\ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$builder = new \Symfony\Component\Config\Definition\Builder\TreeBuilder('foo');
$builder->getRootNode()
->children()
->scalarNode('bar')->end()
->end();
return $builder;
}
}
$config = new Config();
$processor = new \Symfony\Component\Config\Definition\Processor();
$a = ['foo' => ['bar' => 'a']];
$b = ['foo' => ['bar' => 'b']];
$c = $processor->processConfiguration($config, [$a, $b]);