sauls/options-resolver

支持多维数组的多维数组解析的Symfony选项解析器

v1.0.2 2020-08-20 18:14 UTC

This package is auto-updated.

Last update: 2024-09-21 03:08:21 UTC


README

Build Status Packagist Total Downloads Coverage Status Scrutinizer Code Quality License

支持多维数组的多维数组解析的 Symfony OptionsResolver

需求

PHP >= 7.2

安装

使用composer

$ composer require sauls/options-resolver

手动添加composer.json文件

{
    "require": {
        "sauls/options-resolver": "^1.0"
    }
}

使用

标准用法可以在 Symfony OptionsResolver官方文档 中找到。

通过使用点表示法数组索引添加关联数组支持。

定义选项

要定义关联选项,请使用点表示法数组索引。

$resolver->setDefined['nested.name', 'nested.value', 'nested.deep.type'];

添加允许的类型

使用点表示法索引添加允许的类型。

$resolver->addAllowedType('nested.name', ['string']);
$resolver->addAllowedType('nested.value', ['int']);

添加允许的值

使用点表示法索引添加允许的值。

$resolver->addAllowedValues('nested.deep.type', ['one', 'two', 'three']);

默认选项值

默认选项可以作为点表示法索引或关联数组添加。

$resolver->setDefaults(
    [
        'nested.name' => 'Hello world!',
        'nested.value' => 100,
        'nested.deep.type' => 'one',
    ]
);

// Or

$resolver->setDefaults(
    [
        'nested' => [
            'name' => 'Hello world!',
            'value' => 100,
            'deep' => [
                'type' => 'one',
            ],
        ],
    ]
);

解析选项

传递给解析选项的数组可以包含点表示法索引或关联数组。

$resolver->resolve(
    [
        'nested.name' => 'Resolve me!',
        'nested.value' => 500,
        'nested.deep.type' => 'two',
    ]
);

// Or

$resolver->resolve(
    [
        'nested' => [
            'name' => 'Resolve me!',
            'value' => 500,
            'deep' => [
                'type' => 'two',
            ],
        ]
    ]
);

异常

所有异常将返回有关您的点表示法关联选项的错误信息。例如

选项 "nested.deep.type" 的值为 "four",是无效的。接受的值是:"one","two","three"。

期望选项 "nested.value" 为类型 "int",但实际为类型 "string"。

缺少必需的选项 "nested.value"。

选项 "nested.deep.nmae" 不存在。定义的选项有:"nested.deep.name","nested.name","nested.type","nested.value","text","type"。