1

この構造の構成を解析したい:

$config = [
    'streams' => [
        'foo' => [
            [
                'id' => 'some-identifier',
                'type' => 'a',
            ],
            [
                'id' => 'some-other-identifier',
                'type' => 'b',
            ],
        ],
        'bar' => ...,
    ],
];

この配列streamsには事前定義されたキーがあり、複数の任意の名前のストリームのマップが含まれています。この場合、2 つのストリームが呼び出されfoobar定義されています。

すべてのストリームには、ハンドラーの配列があります。idすべてのハンドラーは、 と の 2 つの属性を持つマップtypeです。

私は結局:

$rootNode
    ->children()
        ->arrayNode('streams')
            ->prototype('array')
                ->children()

                ->end()
            ->end()
        ->end()
    ->end()
;

そして今、私は次に何が起こるかで立ち往生しています。

英語で説明すると、次のようになりstreamsます。マップの配列のマップです。

そして、私のコードでは、それを「マップである」と表現することができ、「配列の」と言う方法が行き詰まっています。

ヒントはありますか?

4

1 に答える 1

3

それが方法です。

$rootNode
    ->children()
        ->arrayNode('streams')
            ->prototype('array')
                ->prototype('array')
                    ->children()
                        ->scalarNode('id')->end()
                        ->scalarNode('type')->end()
                    ->end()
                ->end()
            ->end()
        ->end()
    ->end()
;

アウターprototype('array')にはありませんのでご注意くださいchildren()

于 2015-06-24T02:09:59.510 に答える