brunogab/inputhelper

为PHP提供的简单输入数据清洗和自动类型转换助手

v1.1 2020-03-11 16:29 UTC

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'
];