php validator,实用的PHP验证器类Validator
使用composer安装
提供非常方便的composer安装:
composer require particle/validator
使用
在使用之前请确保在项目中引入了 vendor/autoload.php 文件。
use Particle\Validator\Validator;
require './vendor/autoload.php';
$v = new Validator;
$v->required('first_name')->lengthBetween(2, 30)->alpha();
$v->required('last_name')->lengthBetween(2, 40)->alpha();
$data = [
'first_name' => 'John',
'last_name' => 'Doe',
];
$result = $v->validate($data);
$result->isValid(); // 返回bool(true or false)
Required and optional
这个方法是内置的,主要用于检测某个key的值,如果希望检测的某个值可能为空,而希望验证通过,则我们可以设置该方法的第三个参数为true。(默认值为false 代表不能为空值)。其中 required 和 optional 的区别主要是如下 required 是验证的值必须存在;而 optional 是可选的,如果key存在,则验证,不存在,则不用验证。
数组方式验证
// 基本验证
$values = [
'user' => [
'username' => 'bob',
]
];
$v = new Validator;
$v->required('user.username')->alpha();
$result = $v->validate($values);
$result->getValues() === $values; // bool(true)
内置验证规则
allowEmpty(callable $callback)是否可以为空值,true则通过 反之亦然。
$v = new Validator;
// 如果用户名存在,则验证通过
$v->required('name')->allowEmpty(function (array $values) {
return $values['namePresent'] === true;
});
$v->validate(['namePresent' => true, 'name' => 'John'])->isValid(); // true
$v->validate(['namePresent' => true])->isValid(); // true
$v->validate(['namePresent' => false])->isValid(); // false
alnum($allowWhitespace = false) 包含数字和字母,不允许空格,(a-z, A-Z, 0-9)
alpha($allowWhitespace = false) 验证的字符包含 (a-z, A-Z),不允许空格。
between($min, $max) 验证必须在一个数值范围,如(12, 34)。
bool()布尔Boolean值验证。
callback(callable $callable) 回调验证。
creditCard() 验证信用卡,验证之前必须先安装 composer require byrokrat/checkdigit。
datetime($format = null) 验证日期。
digits() 一串数字字符串验证,不包含小数。
each(callable $callable) 遍历验证。
email() 验证邮箱。
equals($value) 验证是否相等。
float()验证浮点数。
greaterThan($value) 大于某个值。
hash($hashAlgorithm, $allowUppercase = false) md5 sha1等验证。
inArray(array $array, $strict = true) 验证是否属于数组范围内
integer($strict = false) 整数验证。
isArray() 数组验证。
json()json格式字符串验证。
length($length) 长度验证。
lengthBetween($min, $max) 长度范围验证。
lessThan($value) 小于验证。
numeric() 验证浮点数和整数。
phone($countryCode) 验证手机号,使用之前先安装 composer require giggsey/libphonenumber-for-php。
regex($regex) 正则验证。
required(callable $callback) 必须存在,不能为空。
string() 字符串验证。
url($schemes = []) 验证URL。
uuid($version = Uuid::VALID_FORMAT) 验证UUID。
提示信息覆盖
Particle\Validator为默认规则提供了默认的消息提示,当然你也可以为验证规则设置特定的消息提示以覆盖默认值。
$v = new Validator;
$v->required('first_name')->lengthBetween(0, 5);
$v->required('last_name')->lengthBetween(0, 5);
$v->overwriteDefaultMessages([
LengthBetween::TOO_LONG => 'It\'s too long, that value'
]);
$v->overwriteMessages([
'first_name' => [
LengthBetween::TOO_LONG => 'First name is too long, mate'
]
]);
$result = $v->validate([
'first_name' => 'this is too long',
'last_name' => 'this is also too long',
]);
var_dump($result->getMessages());
验证场景
验证库一般都可以根据场景来使用不同的验证,比如插入数据和更新数据的区别:
$v = new Validator;
// 定义一个插入时候的验证规则
$v->context('insert', function(Validator $context) {
$context->required('first_name')->lengthBetween(2, 30);
});
// 定义一个更新时候的验证规则
$v->context('update', function(Validator $context) {
$context->optional('first_name')->lengthBetween(2, 30);
});
$v->validate([], 'update')->isValid(); // bool(true)
$v->validate([], 'insert')->isValid(); // bool(false), because first_name is required.
在MVC架构中使用验证器
很多时候,我们的项目都是进行分层开发的,例如常见的MVC,则我们可以在分层项目中调用该验证类,示例如下:
use Particle\Validator\ValidationResult;
use Particle\Validator\Validator;
class MyEntity
{
protected $id;
public function setId($id)
{
$this->id = $id;
return $this;
}
public function validate() {
$v = new Validator;
$v->required('id')->integer();
return new $v->validate($this->values());
}
protected function values()
{
return [
'id' => $this->id,
];
}
}
// in a controller:
$entity = new Entity();
$entity->setId($this->getParam('id'));
$result = $entity->validate();
if (!$result->isValid()) {
return $this->renderTemplate([
'messages' => $result->getMessages() // or maybe even just pass in $result.
]);
}
当然,如果默认的验证规则不能满足时,我们可以再扩展定制规则,有关定制扩展规则,请参考项目官网:http://validator.particle-php.com/en/latest/.
php validator,实用的PHP验证器类Validator相关推荐
- yii 验证器类 细说YII验证器
在 yii-1.1.10.r3566 版本中,yii自带的验证器共有 19 个.全部如下: // CValidator.php public static $builtInValidators=arr ...
- Spring MVC验证器:Validator接口和ValidationUtils类
本节主要介绍创建自定义 Spring 验证器时需要实现的 Validator 接口和工具类 ValidationUtils. Validator接口 创建自定义 Spring 验证器需要实现 org. ...
- 9、 Struts2验证(声明式验证、自定义验证器)
1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...
- jsf 自定义属性_必填字段的自定义JSF验证器
jsf 自定义属性 实现EditableValueHolder接口的JSF组件具有两个属性" required"和" requiredMessage" –一个标 ...
- 必填字段的自定义JSF验证器
实现EditableValueHolder接口的JSF组件具有两个属性" required"和" requiredMessage" –一个标志,指示用户需要输入 ...
- Spring MVC验证器应用实例(超详细)
本节使用一个应用 springMVCDemo08 讲解 Spring 验证器的编写及使用.该应用中有一个数据输入页面 addGoods.jsp,效果如图 1 所示. 有一个数据显示页面 goodsLi ...
- jsf表单验证_JSF验证示例教程–验证器标签,定制验证器
jsf表单验证 JSF validation model defines a set of standard classes for validating the UI components. The ...
- Django REST framework API 指南(12):验证器
官方原文链接 本系列文章 github 地址 转载请注明出处 验证器 大多数情况下,您在 REST framework 中处理验证时,只需依赖默认的字段验证,或者在序列化类或字段类上编写明确的验证方法 ...
- tp5 php正则邮箱,TP5验证器使用实例
TP5验证器建立模块\validate\验证器文件名 例如我们定义了一个验证USER的验证器类<?php namespace app\admin\validate; use think\Vali ...
最新文章
- facebook maskrcnn 安装笔记
- 手把手教你Tableau高级数据分析功能(附数据集)
- python 跟踪算法
- [转]十分钟搞定Vue搭建
- document对象相关信息
- 强大的Spring Boot启动监听器事件-初始化系统账号密码
- sqoop建表_Sqoop学习之路 (一)
- return view前端怎么获取_Web 前端路由原理解析和功能实现
- 最近的shell脚本(updating)
- 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)
- 2021-10-11电子天平期间核查和日常核查管理方法
- golang 之时间国际化
- 程序员应该如何做才能更好的实现自我价值?
- win10能上网显示无法连接服务器,电脑不能联网怎么办 Win10无法连接网络解决方法...
- RC电路(积分电路,微分电路)
- SQL高级查询案例讲解与分析
- 腾讯滨海大厦 智能楼宇 智慧建筑 3D可视化管理系统-优锘科技-ThingJS物联网开发案例...
- :-1: error: dependent ‘..\camera3d\qss\main.qss‘ does not exist.
- 语音识别、手写输入 QQ2011正式版全体验
- 2012年数学建模国赛D题(机器人避障问题)优秀论文.doc
热门文章
- docker 报错 /usr/bin/docker-current: Error response from daemon: driver failed programming external
- linux hexdump命令详解
- 两篇文章说异常和中断之二
- Android 控件学习--自定义SeekBar
- 用ActivityGroup解决TabHost中多个Activity跳转问题
- java安装好了打不开机_这都不犯规?王骁辉尺度把握得真好 难怪0+0+0能打20分钟...
- m1芯片 服务器,m1服务器地址
- 南昌理工学院计算机系考研,南昌理工学院的学生可不可以考研和公务员
- min3d 引擎学习笔记之一
- oracle23290,详细介绍Oracle数据库EM Console重建过程