Symfony2 配置强制数组类型

Symfony2 configuration force array type

我正在开发 Symfony2 应用程序,我希望能够使用这样的配置文件:

my_config:
    values: ['val1', 'val2']

所以我创建了以下配置文件:

class Configuration implements ConfigurationInterface {
    public function getConfigTreeBuilder() {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('my_config');

        $rootNode
            ->children()
                ->arrayNode('values')
                    ->prototype('scalar')->end()
                ->end()
            ->end()
        ;

        return $treeBuilder;
    }
}

但是,此配置允许我添加如下内容:

my_config:
    values: ['val1', 123, false]

有没有办法强制数组值是字符串类型(例如 prototype('string') 之类的东西)?

没有字符串。检查文件 https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php#L27

节点映射只需要这些值

$this->nodeMapping = array(
    'variable' => __NAMESPACE__.'\VariableNodeDefinition',
    'scalar' => __NAMESPACE__.'\ScalarNodeDefinition',
    'boolean' => __NAMESPACE__.'\BooleanNodeDefinition',
    'integer' => __NAMESPACE__.'\IntegerNodeDefinition',
    'float' => __NAMESPACE__.'\FloatNodeDefinition',
    'array' => __NAMESPACE__.'\ArrayNodeDefinition',
    'enum' => __NAMESPACE__.'\EnumNodeDefinition',
);

您可以在配置中手动检查 class。 查看http://symfony.com/doc/current/cookbook/bundles/configuration.html#processing-the-configs-array此部分以获取更多信息。