Download the PHP package shonans/php-validate without Composer

On this page you can find all versions of the php package shonans/php-validate. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php-validate

PHP Validate

一个简洁小巧且功能完善的php验证、过滤库。

两种规则配置方式

validate 同时支持两种规则配置方式,对应了两种规则的收集解析策略。

多字段单规则

配置示例: (本文档的示例都是这种)

单字段多规则

配置示例:

注意: master 分支是要求 php7.1+ 的(推荐使用)。1.x 分支是支持php5的代码分支,但是基本上不再维护。

安装

立即使用

方式1: 直接使用类 Validation

需要快速简便的使用验证时,可直接使用 Shonan\Validate\Validation

方式2: 继承类 Validation

创建一个新的class,并继承 Shonan\Validate\Validation。用于一个(或一系列相关)请求的验证, 相当于 laravel 的 表单请求验证

此方式是最为完整的使用方式,可以配置规则,设置字段翻译,设置自定义的错误消息等

方式3: 使用trait ValidationTrait

创建一个新的class,并使用 Trait Shonan\Validate\ValidationTrait

此方式是高级自定义的使用方式, 可以方便的嵌入到其他类中。

如下,嵌入到一个数据模型类中, 实现一个简单的模型基类,添加数据库记录前自动进行验证

使用:

添加自定义验证器

底层调用验证器是支持:

注意: 写在当前类里的验证器方法必须带有后缀 Validator, 以防止对内部的其他的方法造成干扰

示例

直接写闭包进行验证 e.g:

定义一个闭包验证类进行验证,这种方法能提高验证方法的复用性

别忘了继承 \Shonan\Validate\Validator\AbstractValidator,和实现必须方法validate

验证前置/后置处理

该方法与onBeforeValidate&onAfterValidate有冲突

一个完整的规则示例

一个完整的规则示例, 包含了所有可添加的项。

注意:

字段验证器 FieldValidation 的配置类似,只是 只有一个字段,而验证器允许有多个

规则选项设置

除了可以添加字段的验证之外,还有一些特殊关键词可以设置使用,以适应各种需求。

default -- 设置字段的默认值

给一个或多个字段设置一个默认值。

NOTICE: 默认值也会被验证器验证

msg -- 设置错误提示消息

设置当前规则的错误提示消息, 设置了后就不会在使用默认的提示消息。

on -- 设置规则使用场景

如果需要让定义的规则在多个类似情形下重复使用,可以设置规则的使用场景。在验证时也表明要验证的场景

使用:

如,在下面指定了验证场景时,将会使用上面的第 1,3,4 条规则. (第 1 条没有限制规则使用场景的,在所有场景都可用)

when -- 规则的前置条件

只有在先满足了(when)前置条件时才会验证这条规则

如在下面的例子中,检查到第二条规则时,会先执行闭包(when), 当其返回 true 验证此条规则,否则不会验证此条规则

skipOnEmpty -- 为空是否跳过验证

当字段值为空时是否跳过验证,默认值是 true. (参考自 yii2)

'required*' 规则不在此限制内.

如,有一条规则:

提交的数据中 没有 name 字段或者 $data['name'] 等于空都不会进行 string 验证; 只有当 $data['name'] 有值且不为空 时才会验证是否是 string

如果要想为空时也检查, 请将此字段同时加入 required 规则中.

或者也可以设置 'skipOnEmpty' => false:

如何确定值为空 关于为空

isEmpty -- 是否为空判断

是否为空判断, 这个判断作为 skipOnEmpty 的依据. 默认使用 Validators::isEmpty 来判断.

你也可以自定义判断规则:

自定义 isEmpty 验证时,应留意 $value 是否为 ArrayValueNotExists 实例

filter -- 使用过滤器

支持在进行验证前对值使用过滤器进行净化过滤内置过滤器

提示:

场景验证

如果需要让定义的规则在多个类似情形下重复使用,可以设置规则的使用场景。 在验证时也表明要验证的场景

方式1

在继承类中使用 scenarios() 方法:

方式2

添加规则时配置 on 选项:

验证使用

内置的过滤器

一些 php 内置的函数可直接使用。 e.g trim|ucfirst json_decode md5

过滤器 说明 示例
abs 返回绝对值 ['field', 'int', 'filter' => 'abs'],
int/integer 过滤非法字符并转换为int类型 支持数组 ['userId', 'number', 'filter' => 'int'],
bool/boolean 转换为 bool 关于bool值 ['argee', 'bool']
float 过滤非法字符,保留float格式的数据 ['price', 'float', 'filter' => 'float'],
string 过滤非法字符并转换为string类型 ['userId', 'number', 'filter' => 'string'],
trim 去除首尾空白字符,支持数组。 ['username', 'min', 4, 'filter' => 'trim'],
nl2br 转换 \n \r\n \r<br/> ['content', 'string', 'filter' => 'nl2br'],
lower/lowercase 字符串转换为小写 ['description', 'string', 'filter' => 'lowercase'],
upper/uppercase 字符串转换为大写 ['title', 'string', 'filter' => 'uppercase'],
snake/snakeCase 字符串转换为蛇形风格 ['title', 'string', 'filter' => 'snakeCase'],
camel/camelCase 字符串转换为驼峰风格 ['title', 'string', 'filter' => 'camelCase'],
timestamp/strToTime 字符串日期转换时间戳 ['pulishedAt', 'number', 'filter' => 'strToTime'],
url URL 过滤,移除所有不符合 URL 的字符 ['field', 'url', 'filter' => 'url'],
str2list/str2array 字符串转数组 'tag0,tag1' -> ['tag0', 'tag1'] ['tags', 'strList', 'filter' => 'str2array'],
unique 去除数组中的重复值(by array_unique()) ['tagIds', 'intList', 'filter' => 'unique'],
email email 过滤,移除所有不符合 email 的字符 ['field', 'email', 'filter' => 'email'],
encoded 去除 URL 编码不需要的字符,与 urlencode() 函数很类似 ['imgUrl', 'url', 'filter' => 'encoded'],
clearSpace 清理空格 ['title', 'string', 'filter' => 'clearSpace'],
clearNewline 清理换行符 ['title', 'string', 'filter' => 'clearNewline'],
clearTags/stripTags 相当于使用 strip_tags() ['content', 'string', 'filter' => 'clearTags'],
escape/specialChars 相当于使用 htmlspecialchars() 转义数据 ['content', 'string', 'filter' => 'specialChars'],
quotes 应用 addslashes() 转义数据 ['content', 'string', 'filter' => 'quotes'],

内置的验证器

/ 分隔的验证器,表明功能是一样的,只是有不同的别名

验证器 说明 规则示例
required 要求此字段/属性是必须的(不为空的)。关于为空 ['tagId, userId', 'required' ]
int/integer 验证是否是 int 支持范围检查 ['userId', 'int'] ['userId', 'int', 'min'=>4, 'max'=>16]
num/number 验证是否是 number(大于0的整数) 支持范围检查 ['userId', 'number'] ['userId', 'number', 'min'=>4, 'max'=>16]
bool/boolean 验证是否是 bool. 关于bool值 ['open', 'bool']
float 验证是否是 float ['price', 'float']
string 验证是否是 string. 支持长度检查 ['name', 'string'], ['name', 'string', 'min'=>4, 'max'=>16]
accepted 验证的字段必须为 yes/on/1/true 这在确认「服务条款」是否同意时有用(ref laravel) ['agree', 'accepted']
url 验证是否是 url ['myUrl', 'url']
email 验证是否是 email ['userEmail', 'email']
alpha 验证值是否仅包含字母字符 ['name', 'alpha']
alphaNum 验证是否仅包含字母、数字 ['field', 'alphaNum']
alphaDash 验证是否仅包含字母、数字、破折号( - )以及下划线( _ ) ['field', 'alphaDash']
map/isMap 验证值是否是一个非自然数组 map (key - value 形式的) ['goods', 'isMap']
list/isList 验证值是否是一个自然数组 list (key是从0自然增长的) ['tags', 'isList']
array/isArray 验证是否是数组 ['goods', 'isArray']
each 对数组中的每个值都应用给定的验证器(这里的绝大多数验证器都可以使用),并且要全部通过 ['goods.*','each','string'], ['goods.*','each','string','min'=>3]
hasKey 验证数组存在给定的key(s) ['goods', 'hasKey', 'pear'] ['goods', 'hasKey', ['pear', 'banana']]
distinct 数组中的值必须是唯一的 ['goods', 'distinct'], ['users.*.id', 'distinct']
ints/intList 验证字段值是否是一个 int list ['tagIds', 'intList']
numList 验证字段值是否是一个 number list ['tagIds', 'numList']
strings/strList 验证字段值是否是一个 string list ['tags', 'strList']
arrList 验证字段值是否是一个 array list(多维数组) ['tags', 'arrList']
min 最小边界值验证 ['title', 'min', 40]
max 最大边界值验证 ['title', 'max', 40]
size/range/between 验证大小范围, 可以支持验证 int, string, array 数据类型 ['tagId', 'size', 'min'=>4, 'max'=>567]
length 长度验证( 跟 size差不多, 但只能验证 string, array 的长度 ['username', 'length', 'min' => 5, 'max' => 20]
fixedSize/sizeEq/lengthEq 固定的长度/大小(验证 string, array 长度, int 大小) ['field', 'fixedSize', 12]
startWith 值(string/array)是以给定的字符串开始 ['field', 'startWith', 'hell']
endWith 值(string/array)是以给定的字符串结尾 ['field', 'endWith', 'world']
in/enum 枚举验证: 包含 ['status', 'in', [1,2,3]]
notIn 枚举验证: 不包含 ['status', 'notIn', [4,5,6]]
inField 枚举验证: 字段值 存在于 另一个字段(anotherField)的值中 ['field', 'inField', 'anotherField']
eq/mustBe 必须是等于给定值 ['status', 'mustBe', 1]
ne/neq/notBe 不能等于给定值 ['status', 'notBe', 0]
eqField 字段值比较: 相同 ['passwd', 'eqField', 'repasswd']
neqField 字段值比较: 不能相同 ['userId', 'neqField', 'targetId']
ltField 字段值比较: 小于 ['field1', 'ltField', 'field2']
lteField 字段值比较: 小于等于 ['field1', 'lteField', 'field2']
gtField 字段值比较: 大于 ['field1', 'gtField', 'field2']
gteField 字段值比较: 大于等于 ['field1', 'gteField', 'field2']
requiredIf 指定的其它字段( anotherField )值等于任何一个 value 时,此字段为 必填(ref laravel) ['city', 'requiredIf', 'myCity', ['chengdu'] ]
requiredUnless 指定的其它字段( anotherField )值等于任何一个 value 时,此字段为 不必填(ref laravel) ['city', 'requiredUnless', 'myCity', ['chengdu'] ]
requiredWith 指定的字段中的 任意一个 有值且不为空,则此字段为 必填(ref laravel) ['city', 'requiredWith', ['myCity'] ]
requiredWithAll 如果指定的 所有字段 都有值,则此字段为 必填(ref laravel) ['city', 'requiredWithAll', ['myCity', 'myCity1'] ]
requiredWithout 如果缺少 任意一个 指定的字段值,则此字段为 必填(ref laravel) ['city', 'requiredWithout', ['myCity', 'myCity1'] ]
requiredWithoutAll 如果所有指定的字段 都没有值,则此字段为 必填(ref laravel) ['city', 'requiredWithoutAll', ['myCity', 'myCity1'] ]
date 验证是否是 date ['publishedAt', 'date']
dateFormat 验证是否是 date, 并且是指定的格式 ['publishedAt', 'dateFormat', 'Y-m-d']
dateEquals 验证是否是 date, 并且是否是等于给定日期 ['publishedAt', 'dateEquals', '2017-05-12']
beforeDate 验证字段值必须是给定日期之前的值(ref laravel) ['publishedAt', 'beforeDate', '2017-05-12']
beforeOrEqualDate 字段值必须是小于或等于给定日期的值(ref laravel) ['publishedAt', 'beforeOrEqualDate', '2017-05-12']
afterOrEqualDate 字段值必须是大于或等于给定日期的值(ref laravel) ['publishedAt', 'afterOrEqualDate', '2017-05-12']
afterDate 验证字段值必须是给定日期之前的值 ['publishedAt', 'afterDate', '2017-05-12']
json 验证是否是json字符串(默认严格验证,必须以{ [ 开始) ['goods', 'json'] ['somedata', 'json', false] - 非严格,普通字符串eg 'test'也会通过
file 验证是否是上传的文件 ['upFile', 'file']
image 验证是否是上传的图片文件 ['avatar', 'image'], 限定后缀名 ['avatar', 'image', 'jpg,png']
ip 验证是否是 IP ['ipAddr', 'ip']
ipv4 验证是否是 IPv4 ['ipAddr', 'ipv4']
ipv6 验证是否是 IPv6 ['ipAddr', 'ipv6']
macAddress 验证是否是 mac Address ['field', 'macAddress']
md5 验证是否是 md5 格式的字符串 ['passwd', 'md5']
sha1 验证是否是 sha1 格式的字符串 ['passwd', 'sha1']
color 验证是否是html color ['backgroundColor', 'color']
regex/regexp 使用正则进行验证 ['name', 'regexp', '/^\w+$/']
safe 用于标记字段是安全的,无需验证 ['createdAt, updatedAt', 'safe']

safe 验证器,标记属性/字段是安全的

特殊验证器 用于标记字段是安全的,无需验证,直接加入到安全数据中。

比如我们在写入数据库之前手动追加的字段: 创建时间,更新时间。

一些补充说明

关于为空判断

字段符合下方任一条件时即为「空」

关于布尔值

值符合下列的任意一项即认为是为bool值(不区分大小写)

关于文件验证

文件验证时注意要设置文件信息源数据

提示和注意

规则:

一些关键方法API

设置验证场景

设置当前验证的场景名称。将只会使用符合当前场景的规则对数据进行验证

进行数据验证

进行数据验证。 返回验证器对象,然后就可以获取验证结果等信息。

添加自定义的验证器

添加自定义的验证器。 返回验证器对象以支持链式调用

判断验证是否通过

获取验证是否通过(是否有验证失败)。

获取所有错误信息

获取所有的错误信息, 包含所有错误的字段和错误信息的多维数组。 eg:

同一个属性/字段也可能有多个错误消息,当为它添加了多个验证规则时。

得到第一个错误信息

得到最后一个错误信息

获取所有验证通过的数据

获取所有 验证通过 的安全数据.

注意: 当有验证失败出现时,安全数据 safeData 将会被重置为空。 即只有全部通过验证,才能获取到 safeData

根据字段名获取安全值

验证通过 的数据中取出对应 key 的值

获取所有原始数据

获取验证时传入的所有数据

根据字段名获取原始数据的值

从验证时传入的数据中取出对应 key 的值

代码示例

可运行示例请看 example

单元测试

License

MIT


All versions of php-validate with dependencies

PHP Build Version
Package Version
Requires php Version >=7.4
toolkit/stdlib Version ~1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package shonans/php-validate contains the following files

Loading the files please wait ....