zoukankan      html  css  js  c++  java
  • PHP中的数据验证,使用respect/validation

    简介

    数据的验证(validation)是经常用的一个操作,通常是使用正则表达式的方式进行验证。但是,“当你尝试使用正则表达式解决一个问题时候,那么,现在你有两个问题了。”

    PHP5.2.0以后内置了一个filter 扩展可以用于数据的过滤和净化,这个内置扩展的最大问题是功能太弱,能验证的东西太少。基本上就是验证一下ip url 邮件地址,别的就没有了,简单用用还是可以可以的,复杂的功能就别指望了。

    这里将要介绍的respect/validation是一个PHP的验证库,在githubcomposerpackagist上都是同类中星星最多的。

    特点:

    1 使用简单,支持链式操作,可以组合不同的验证规则,支持对对象、数组等组合数据形式的验证。

    2 内容丰富,可以验证的数据类型非常多,包含了大部分的常见验证:

     

    安装

    Composer 安装

    respect/validation 已经提交到Packagist,可以直接使用composer下载:

    composer require respect/validation

    Packagist国内慢的几乎不能用,可以换一个镜像或者搭高速梯子。

    基本使用

    Helloword

    创建一个验证类的实例,然后调用validate方法,validate方法返回true或者false

    验证数字:

    use RespectValidationValidator as v;

    $number = 123;v::numeric()->validate($number); //true

    链式验证(awesome

    最方便强大的feature就是链式的验证操作:

    验证日期处于某个范围内

    v::date('Y-m-d')->between('1980-02-02', 'now')->validate('1988-08-08');

    Date between 是不同的rule,第一个date('Y-m-d')负责验证日期格式正确,后面的between负责验证在区间内。

    验证一个不包含空格,长度在1-15之间的字符串:

    $usernameValidator = v::alnum()->noWhitespace()->length(1,15);

    $usernameValidator->validate('alganet'); //true

    等等。

    Input optional

    注意,默认情况下,除非文档特别说明,验证函数默认参数是可选的,所以空输入都会得到true的验证结果。可以使用notEmpty()来禁止这个行为。验证字符串不为空:

    v::alnum()->notEmpty()->validate(''); //false

    实际上在这里你可能需要更加的小心的验证,例如domain这个rule,就不符合:

    v::domain()->validate(''); //true

    上面的验证结果会是true,而不是false

    规则反转

    v::not(v::int())->validate(10); //false, input must not be integer

    获取验证失败信息

    验证一共有3个可用的函数validateassertcheckvalidate返回true或者falseassertcheck则能够抛出异常,异常信息中携带具体的错误信息。

    如果验证通过,assert函数返回true,验证不通过则抛出异常。

    具体使用参考文档。

    参考

    1  GithubRespect/Validation

    2  官网:http://respect.li/Validation/

  • 相关阅读:
    进程 线程
    random模块 时间模块 sys模块 os模块 json模块 pickle模块
    异常处理
    面向对象进阶篇
    面向对象初级篇
    正则表达式
    re模块的相关知识
    CNN归纳偏好
    window和Linux下安装nvidia的apex
    使用GrabCut做分割
  • 原文地址:https://www.cnblogs.com/robotech/p/10206573.html
Copyright © 2011-2022 走看看