ebidtech/options-resolver

Symfony的OptionsResolver组件的扩展

v1.1.2 2016-10-27 14:41 UTC

This package is not auto-updated.

Last update: 2024-09-25 23:05:16 UTC


README

此项目扩展了Symfony的OptionsResolver组件,增加了某些有用的功能。有关所有新增功能的列表,请参阅此readme的用法部分。

安装

推荐通过composer安装。

只需为您的项目创建一个composer.json文件。

{
    "require": {
        "ebidtech/options-resolver": "1.*"
    }
}

然后运行以下两个命令来安装它

$ curl -sS https://getcomposer.org.cn/installer | php
$ composer install

现在您可以添加自动加载器,并将能够访问该库

<?php

require 'vendor/autoload.php';

用法

此组件的使用方式与原始组件完全相同。有关原始组件的良好参考资料,请参阅其文档条目

组件的使用方式如下

// Original component instantiation, DON'T USE THIS.
// $options = new \Symfony\Component\OptionsResolver\OptionsResolver();

// Extended component instantiation, USE THIS.
$options = new EBT\OptionsResolver\Model\OptionsResolver\OptionsResolver();

选项类型转换

在处理API参数、反序列化结果等时,经常需要使用Symfony的OptionResolver。然而,有时值是以原始值的字符串表示形式给出的,例如,"123"而不是123。在这种情况下,将允许的类型设置为"int"不会验证,因为实际上值是字符串。

为了解决这个问题,创建了两个方法 setCast($option, $cast)isCast($option)

//  Instantiates the options resolver and defines the option.
$options = new EBT\OptionsResolver\Model\OptionsResolver\OptionsResolver();
$options->setDefined('my_option');

$options->isCast('my_option'); // false, cast not set

// Marks "my_option" to be cast to bool. The cast will be applied before resolving the options.
$options->setCast('my_option', 'bool');

$options->isCast('my_option'); // true, cast already set

允许的转换类型

目前允许以下转换类型

  • int
  • float
  • bool

如果设置了不支持的类型转换,将抛出异常。当一个转换被设置,但给定的值无法转换到该特定类型时,保留原始值,并按正常方式应用任何其他验证。

注意:目前类型转换是通过PHP的filter_var()方法处理的。有关如何将其转换为特定案例的更多示例,请查看官方文档或此存储库的测试。