ej3dev/veritas

PHP 编写的实用且简洁的验证库

v0.6.0 2014-05-23 21:19 UTC

This package is not auto-updated.

Last update: 2024-10-02 04:30:01 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

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 是一个 单文件项目,没有依赖项,可在 GitHubPackagist 上找到。您有三种方法来安装它

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() 返回 truefalse,但您可以通过传递一个或两个参数来更改此行为。例如

$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

特此授予任何人免费获得此软件及其相关文档文件(以下简称“软件”)的副本的权利,用于在不受限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,也不论该责任是否源于、因之而起或与此软件的使用或其他交易有关。