是的,又一个参数验证工具包——validator
写了一个 PHP 参数验证的组件,放在 composer 里面管理。
之前也用过各种框架里面的 validator,总觉得太重了,还是自己写一个用起来方便。
轻喷~
安装#
-
在项目的 composer.json 文件中的 require 项中添加:
"furthestworld/validator": "~1.0"
并更新 composer 依赖:
composer update
-
在需要使用 Validator 服务的地方添加:
require_once __ROOT__ . '/vendor/autoload.php';
use FurthestWorld\Validator\Src\Validator;
食用方法#
//扩展验证规则实例
Validator::extend('extend_test', new TestExtendRules());
Validator::formatParams(
$params,
[
'domain' => ['format_rule' => 'strtoupper', 'default_value' => ''],
'member_id' => ['format_rule' => 'formatExtendMemberId:domain']
]
);
Validator::validateParams(
$params,
[
'domain' => ['check_rule' => 'number#numberGt0|string#string:10,500'],
'member_id' => ['check_rule' => 'extendEq:20#number'],
]
);
if (!Validator::pass()) {
//验证未通过
var_dump(Validator::getErrors());
} else {
//验证通过
}
语法说明#
参数格式化#
-
format_rule
规则: 格式化方法(PHP 函数或自定义函数):格式化参数(若为空则默认为当前字段的值) -
default_value
参数默认值设置 -
force_value
强制重置参数
参数验证#
- check_rule
分隔符 |
:或验证
(满足其中的至少一项验证)
分隔符 #
:与验证
(满足其中所有的验证项)
分隔符 :
:方法和参数分隔符
分隔符 ,
:多个参数分隔符
如上面的规则:'number#numberGt0|string#string:10,500'
解析成 PHP 代码逻辑相当于:
if((number && numberGt0) || (string && string:10,500)){
...
}
为了避免方法名和 PHP 关键字冲突,对应规则中的方法在解析成方法名时会自动加上前缀
check
比如上面的number
、numberGt0
、string
验证方法对应的方法分别为:checkNumber
、checkNumberGt0
、checkString
规则实例扩展#
format_rule
和 check_rule
除了使用组件自带的格式化和验证方法,也支持自定义方法。
只需要把自定义的规则实例注册到组件的扩展规则中就可以了,如:
Validator::extend('extend_test', new TestExtendRules());
enjoy~
#
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: