brunogab / inputhelper
为PHP提供的简单输入数据清洗和自动类型转换助手
v1.1
2020-03-11 16:29 UTC
Requires
- php: ^7.0
This package is auto-updated.
Last update: 2024-09-13 23:51:47 UTC
README
清洗器、过滤器、自定义过滤器、助手、输入类型转换
- 对输入数据应用过滤器。
- 如果没有找到/定义过滤器,将自动对输入数据应用类型转换。
- 您可以定义键,它将从输入数据中返回。
目录
安装
运行composer命令
composer require brunogab/inputhelper
或将它添加到你的composer.json中,然后运行composer update
{ "require": { "brunogab/inputhelper": "^1.0" } }
注意
某些值在bool类型、整数/字符串类型之间无法确定("1", 1, 0, on, off..)
bool值检查在自动类型转换中具有更高的优先级:by automatic type-casting:
1是bool-true(不是整数)
'1'是bool-true(不是字符串)
'true'是bool-true(不是字符串)
'on'是bool-true(不是字符串)
'yes'是bool-true(不是字符串)
0是bool-false(不是整数)
'0'是bool-false(不是字符串)
'false'是bool-false(不是字符串)
'off'是bool-false(不是字符串)
'no'是bool-false(不是字符串)
null是bool-false(不是null)
''是bool-false(不是空)
用法
use Brunogab\InputHelper\InputHelper; $inputhelper = new InputHelper; $result = $inputhelper->run($inputs, $filters, $keys);
输入
输入必须是一个数组
$inputs = [ 'key_a' => 'Value_A', 'key_b' => 'value_B', 'key_c' => 'Value_c', ];
过滤器
过滤器可以是空的
$filters = ''; //automatic type-casting will be applied for ALL input value
过滤器可以是字符串
$filters = 'trim'; //trim will be applied for ALL input value
过滤器可以是带有竖线的字符串
$filters = 'trim|upper'; //trim and upper will be applied for ALL input value
过滤器可以是顺序数组
$filters = ['trim','upper']; //trim and upper will be applied for ALL input value
过滤器可以是关联数组
$filters = [ 'key_a' => 'trim', 'key_b' => 'trim|upper', 'key_c' => ['trim'], 'key_d' => ['trim', 'upper'], 'key_e' => ['trim', 'upper', function ($val) { return $val.' + closure'; }], 'key_f' => function ($val) { return $val.' + closure'; } ];
注意
对于没有找到过滤器的输入:自动类型转换
将被应用
键
键可以是空的
$keys = ''; //Result: (array) Inputs
键可以是字符串
$keys = 'key_a'; //key_a value will be returned, Result: inputs['key_a']
注意
如果找不到请求的键,结果将是:NULL
键可以是带有竖线的字符串
$keys = 'key_a|key_b'; //key_a and key_b value will be returned, Result: array (inputs['key_a'], inputs['key_b'])
注意
如果找不到任何请求的键,结果将是:NULL
键可以是顺序数组
$keys = [ 'key_a', 'key_b', 'key_invalid', //not valid key -> will be ignored ]; //Result: array (inputs['key_a'], inputs['key_b'])
注意
如果找不到任何请求的键,结果将是:NULL
示例
见example.php
/** Automatic Type-Casting for Boolean Values */ $inputs = [ 'col_bool_1' => '1', 'col_bool_1_1' => 1, 'col_bool_true' => 'true', 'col_bool_on' => 'on', 'col_bool_yes' => 'yes', 'col_bool_0' => '0', 'col_bool_0_0' => 0, 'col_bool_false' => 'false', 'col_bool_off' => 'off', 'col_bool_no' => 'no', 'col_bool_null' => null, 'col_bool_empty' => '', ]; /* Result: array (size=12) 'col_bool_1' => boolean true 'col_bool_1_1' => boolean true 'col_bool_true' => boolean true 'col_bool_on' => boolean true 'col_bool_yes' => boolean true 'col_bool_0' => boolean false 'col_bool_0_0' => boolean false 'col_bool_false' => boolean false 'col_bool_off' => boolean false 'col_bool_no' => boolean false 'col_bool_null' => boolean false 'col_bool_empty' => boolean false */
自定义规则
您可以编写自定义代码并将其保存到src/Filters/您的代码名称
Filter.php中
namespace Brunogab\InputHelper\Filters; class YourcodenameFilter { public function do($val) { //custom logic return is_bool($val) ? 'Y' : 'N'; } } //then simply use your custom filter $filters = [ 'col_a' => 'yourcodename' ];