ej3dev / veritas
PHP 编写的实用且简洁的验证库
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-10-02 04:30:01 UTC
README
PHP 编写的实用且简洁的验证库。
Veritas 的理念是实现一个灵活且易于使用的验证引擎,以便您可以用日常语言构建问题的方式编写验证代码。
// Is $var a decimal value in the interval [-1,1]? v::is($var)->dec()->in('[-1,1]')->verify(); // Is $var an array with a index 8 with value 'eight'? v::is($var)->arr()->key(8,'eight')->verify(); // Is $var a string that represent a date in format year-month-day? v::is($var)->str()->date('Y-m-d')->verify(); // Is $var an object with a property called 'name'? v::is($var)->obj()->attr('name')->verify(); //Is $mail a valid email address from Gmail or Yahoo? v:isEmail($mail)->contains('@gmail','@yahoo')->verify();
需求
Veritas 需要 PHP 5.3 或更高版本。
安装
Veritas 是一个 单文件项目,没有依赖项,可在 GitHub 和 Packagist 上找到。您有三种方法来安装它
Composer
使用 Composer 依赖关系管理器。将以下内容添加到您的 composer.json
文件中,并运行 composer update
。
"require": { "ej3dev/veritas": "~0.6" }
单文件要求
下载项目包,找到文件 Verifier.php
,并将其复制到您的项目工作目录中的任何位置。然后使用 require_one
在您的代码中包含该文件。
require_once('path/to/Verifier.php');
使用
Composer 自动加载或单文件要求
Veritas 通过 Composer 支持 PSR-4 自动加载。使用 Composer 自动加载器 将第三方代码导入到您的上下文中
<?php //Composer autoloader require('vendor/autoload.php'); //Your code //...
或使用经典文件要求
<?php //Single file require require_once('path/to/Verifier.php'); //Your code //...
命名空间导入
Veritas 是命名空间化的,但您可以使用单个类在您的上下文中编写更少的代码
use ej3dev\Veritas\Verifier as v;
如何验证变量
您可以通过三个简单步骤验证任何 $var
:
- 1. 创建新的
Verifier
实例
v::is($var); //Created new instance loaded with $var data
- 2. 添加规则
v::is($var)->int()->in('[0,9]'); //Add rules to verify an integer between 0 and 9
- 3. 验证并获取结果
$result = v::is($var)->int()->in('[0,9]')->verify(); //Run tests and get true or false //If $var=8 then $result=true //If $var=10 then $result=false
简单示例
Hello World 示例大致如下
<?php //Composer autoload require('vendor/autoload.php'); use ej3dev\Veritas\Verifier as v; $hello = 'Hello World!'; //Is $hello a string? v::is($hello)->str()->verify(); //true
链式验证
可用的验证器可以链式使用,以构建复杂的规则
$number = 8; //Is $number an integer included in the list 2,4,6,8? v::is($number)->int()->in(2,4,6,8)->verify(); //true //Is $number a integer included in the list 1,3,5,7,9? v::is($number)->int()->out(1,3,5,7,9)->verify(); //false $decimal = 3.14; //Is $decimal a decimal number in the close interval [1,5]? v::is($decimal)->dec()->in('[1,5]')->verify(); //true //Is $decimal a decimal number in the open interval (-1,1)? v::is($decimal)->dec()->in('(-1,1)')->verify(); //false $value = 'two'; //Is $value a string included in the list one, two, three? v::is($value)->str()->in('one','two','three')->verify(); //true
输出
所有验证器和规则都返回 Verifier
实例以支持通过 流畅接口 通过 方法链式调用。 verify()
方法用于在应用所有链式规则和验证器后获取验证最终结果。默认情况下,verify()
返回 true
或 false
,但您可以通过传递一个或两个参数来更改此行为。例如
$pi = 3.1416; $euler = 2.7183 //Default v::is($pi)->ineq('>',$euler)->verify(); //Return: true v::is($pi)->eq($euler)->verify(); //Return: false //One parameter v::is("8")->str()->num()->verify( 'String with numeric value' ); //Return: 'String with numeric value' v::is("eight")->str()->num()->verify( 'String with numeric value' ); //Return: false //Two parameters v::is($pi)->in('[3.14,3.142)')->verify( 'Number too close to pi', 'This number is not pi' ); //Return: Number too close to pi v::is($euler)->in('[3.14,3.142)')->verify( 'Number too close to pi', 'This number is not pi' ); //Return: This number is not pi
verify()
的参数可以是 匿名函数
$email = 'mail@domain.com'; v::isEmail($email)->verify( function($email) { mail($email,'Hello','Lorem ipsum dolor sit amet...'); }, function() { exit('Error: Invalid email address'); } );
内置验证器
文档正在制作中。同时,您可以查看文件 tests/VerifierTest.php
中的示例
is()
isEmail()
isUrl()
isIp()
isNull()
isNotNull()
isEmpty()
isNotEmpty()
类型验证器
文档正在制作中。同时,您可以查看文件 tests/VerifierTest.php
中的示例
boo()
int()
dec()
num()
str()
arr()
obj()
res()
规则
文档正在制作中。同时,您可以查看文件 tests/VerifierTest.php
中的示例
attr()
contain()
containAny()
date()
eq()
filter()
in()
ineq()
key()
len()
out()
regex()
value()
without()
验证器和规则的前缀 not
您可以在任何规则或类型验证器前添加前缀 "not" 来获取该规则或类型验证器的逻辑否定
$number = 8; v::is($number)->int()->verify(); //true v::is($number)->notInt()->verify(); //false v::is($number)->dec()->verify(); //false v::is($number)->notDec()->verify(); //true $pi = 3.14; v::is($pi)->in('[-1,1]')->verify(); //false v::is($pi)->notIn('[-1,1]')->verify(); //true v::is($pi)->ineq('<=',3.0)->verify(); //false v::is($pi)->notIneq('<=',3.0)->verify(); //true
更新日志
v0.6.0 [master][Fr.23-May-2014]
- 新验证器类型:
dec()
- 添加了对所有规则和类型验证器前缀
not
的支持 - 在README.md中添加了对Badge Poser标签的支持
- 验证器类通过了484个单元测试
- 修复了少量代码
v0.5.1 [master][5月20日,周二,2014年]
- 完全注释了Verifier.php代码
Verifier
构造函数现在支持一个可选参数,用于配置$test
变量的初始化值- 新增内置验证器:
isEmpty()
和isNotEmpty()
- 新增规则:
containAny()
- 少量代码优化
v0.5.0 [master][5月8日,周四,2014年]
许可证
MIT许可证(MIT)
版权所有(c)2014 Emilio José Jiménez ej3dev@gmail.com
特此授予任何人免费获得此软件及其相关文档文件(以下简称“软件”)的副本的权利,用于在不受限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,也不论该责任是否源于、因之而起或与此软件的使用或其他交易有关。