如何用 symfony/config 解析数组的数组?
How to parse arrays of arrays with symfony/config?
我想解析这个结构的配置:
$config = [
'streams' => [
'foo' => [
[
'id' => 'some-identifier',
'type' => 'a',
],
[
'id' => 'some-other-identifier',
'type' => 'b',
],
],
'bar' => ...,
],
];
在此数组中,streams
是一个预定义键,包含多个任意命名流的映射。在这种情况下,定义了两个名为 foo
和 bar
的流。
每个流都有一个处理程序数组。每个处理程序都是一个具有 2 个属性的映射:id
和 type
.
我最终得到:
$rootNode
->children()
->arrayNode('streams')
->prototype('array')
->children()
->end()
->end()
->end()
->end()
;
现在我陷入了下一步要做什么的困境。
如果我用英文解释它会是:streams
是地图数组的地图。
使用我的代码,我可以将其表达为 "is a map",并且无法表达它是 "of arrays"。
有什么提示吗?
原来如此。
$rootNode
->children()
->arrayNode('streams')
->prototype('array')
->prototype('array')
->children()
->scalarNode('id')->end()
->scalarNode('type')->end()
->end()
->end()
->end()
->end()
->end()
;
注意外prototype('array')
没有children()
我想解析这个结构的配置:
$config = [
'streams' => [
'foo' => [
[
'id' => 'some-identifier',
'type' => 'a',
],
[
'id' => 'some-other-identifier',
'type' => 'b',
],
],
'bar' => ...,
],
];
在此数组中,streams
是一个预定义键,包含多个任意命名流的映射。在这种情况下,定义了两个名为 foo
和 bar
的流。
每个流都有一个处理程序数组。每个处理程序都是一个具有 2 个属性的映射:id
和 type
.
我最终得到:
$rootNode
->children()
->arrayNode('streams')
->prototype('array')
->children()
->end()
->end()
->end()
->end()
;
现在我陷入了下一步要做什么的困境。
如果我用英文解释它会是:streams
是地图数组的地图。
使用我的代码,我可以将其表达为 "is a map",并且无法表达它是 "of arrays"。
有什么提示吗?
原来如此。
$rootNode
->children()
->arrayNode('streams')
->prototype('array')
->prototype('array')
->children()
->scalarNode('id')->end()
->scalarNode('type')->end()
->end()
->end()
->end()
->end()
->end()
;
注意外prototype('array')
没有children()