使用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相关推荐

  1. yii 验证器类 细说YII验证器

    在 yii-1.1.10.r3566 版本中,yii自带的验证器共有 19 个.全部如下: // CValidator.php public static $builtInValidators=arr ...

  2. Spring MVC验证器:Validator接口和ValidationUtils类

    本节主要介绍创建自定义 Spring 验证器时需要实现的 Validator 接口和工具类 ValidationUtils. Validator接口 创建自定义 Spring 验证器需要实现 org. ...

  3. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

  4. jsf 自定义属性_必填字段的自定义JSF验证器

    jsf 自定义属性 实现EditableValueHolder接口的JSF组件具有两个属性" required"和" requiredMessage" –一个标 ...

  5. 必填字段的自定义JSF验证器

    实现EditableValueHolder接口的JSF组件具有两个属性" required"和" requiredMessage" –一个标志,指示用户需要输入 ...

  6. Spring MVC验证器应用实例(超详细)

    本节使用一个应用 springMVCDemo08 讲解 Spring 验证器的编写及使用.该应用中有一个数据输入页面 addGoods.jsp,效果如图 1 所示. 有一个数据显示页面 goodsLi ...

  7. jsf表单验证_JSF验证示例教程–验证器标签,定制验证器

    jsf表单验证 JSF validation model defines a set of standard classes for validating the UI components. The ...

  8. Django REST framework API 指南(12):验证器

    官方原文链接 本系列文章 github 地址 转载请注明出处 验证器 大多数情况下,您在 REST framework 中处理验证时,只需依赖默认的字段验证,或者在序列化类或字段类上编写明确的验证方法 ...

  9. tp5 php正则邮箱,TP5验证器使用实例

    TP5验证器建立模块\validate\验证器文件名 例如我们定义了一个验证USER的验证器类<?php namespace app\admin\validate; use think\Vali ...

最新文章

  1. facebook maskrcnn 安装笔记
  2. 手把手教你Tableau高级数据分析功能(附数据集)
  3. python 跟踪算法
  4. [转]十分钟搞定Vue搭建
  5. document对象相关信息
  6. 强大的Spring Boot启动监听器事件-初始化系统账号密码
  7. sqoop建表_Sqoop学习之路 (一)
  8. return view前端怎么获取_Web 前端路由原理解析和功能实现
  9. 最近的shell脚本(updating)
  10. 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)
  11. 2021-10-11电子天平期间核查和日常核查管理方法
  12. golang 之时间国际化
  13. 程序员应该如何做才能更好的实现自我价值?
  14. win10能上网显示无法连接服务器,电脑不能联网怎么办 Win10无法连接网络解决方法...
  15. RC电路(积分电路,微分电路)
  16. SQL高级查询案例讲解与分析
  17. 腾讯滨海大厦 智能楼宇 智慧建筑 3D可视化管理系统-优锘科技-ThingJS物联网开发案例...
  18. :-1: error: dependent ‘..\camera3d\qss\main.qss‘ does not exist.
  19. 语音识别、手写输入 QQ2011正式版全体验
  20. 2012年数学建模国赛D题(机器人避障问题)优秀论文.doc

热门文章

  1. docker 报错 /usr/bin/docker-current: Error response from daemon: driver failed programming external
  2. linux hexdump命令详解
  3. 两篇文章说异常和中断之二
  4. Android 控件学习--自定义SeekBar
  5. 用ActivityGroup解决TabHost中多个Activity跳转问题
  6. java安装好了打不开机_这都不犯规?王骁辉尺度把握得真好 难怪0+0+0能打20分钟...
  7. m1芯片 服务器,m1服务器地址
  8. 南昌理工学院计算机系考研,南昌理工学院的学生可不可以考研和公务员
  9. min3d 引擎学习笔记之一
  10. oracle23290,详细介绍Oracle数据库EM Console重建过程