php - 在 OptionsResolver 中使用多维数组

标签 php arrays symfony multidimensional-array

我正在使用 OptionsResolver component在类里面设置我的默认设置。由于我有大量参数,因此我创建了一个多维数组:

<?php
$resolver = new OptionsResolver();
$resolver->setDefaults([
    'db' => [
        'hostname' => 'localhost',
        'username' => 'root'
    ]
]);
?>

现在我想否决用户名,而不是主机名。如果我这样做

$resolver->resolve(['db' => ['username' => 'test']);

hostname 参数不见了。

我可以使用 OptionsResolver 组件创建多维数组吗?

最佳答案

目前不支持。然而,我已经看到这种方法被使用,如果我记得的话,甚至在 Symfony 本身也是如此。

$resolver = new OptionsResolver();
$resolver
    ->setRequired(array(
        'db'
    ))
    ->setAllowedTypes(array(
        'db' => 'array'
    ))
;

$dbResolver = new OptionsResolver();
$dbResolver
    ->setDefaults(array(
        'hostname',
        'username'
    ))
    ->setAllowedTypes(array(
        'hostname' => 'string',
        'username' => 'string'
    ))
;

$options = $resolver->resolve($options);
$options['db'] = $dbResolver->resolve($options['db']);

关于php - 在 OptionsResolver 中使用多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962179/

相关文章:

php - 在 PHP/MySQL echo URL 变量中检查/插入 http

PHP 尝试使用 preg_match 和 preg_replace 分配 127 TB 的内存和内存泄漏

php - 将可变数量的参数传递给 php 函数的最佳方法

c++ - 将二维数组保存到文件 C++

php - Symfony2 查询生成器 "SELECT where sum children > 0"

javascript - 形成如何查找()电子邮件和密码输入

arrays - 如何在 Smalltalk 中访问二维数组中的元素

c - 通过在 C 中标记字符串来尝试读取文本文件时出现无限循环

symfony - 在symfony2中调用控制台函数

forms - Twig 上 form_widget 选择的占位符