如何用 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 是一个预定义键,包含多个任意命名流的映射。在这种情况下,定义了两个名为 foobar 的流。

每个流都有一个处理程序数组。每个处理程序都是一个具有 2 个属性的映射:idtype.

我最终得到:

$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()