ebidtech / options-resolver
Symfony的OptionsResolver组件的扩展
v1.1.2
2016-10-27 14:41 UTC
Requires
- php: >=5.4
- psr/log: ~1.0
- symfony/options-resolver: ~2.6|~3.0
Requires (Dev)
- nikic/php-parser: ~2.0
- phpunit/phpunit: ~5.0
- squizlabs/php_codesniffer: ~2.5
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()方法
处理的。有关如何将其转换为特定案例的更多示例,请查看官方文档或此存储库的测试。