biohzrdmx / validator-php
服务器端表单验证大受欢迎
Requires
- php: >=5.6
- ext-mbstring: *
Requires (Dev)
- pcov/clobber: ^2.0
- phpstan/phpstan: ~0.12.80
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-29 05:43:08 UTC
README
服务器端表单验证大受欢迎
基本用法
首先使用 Composer 需要 biohzrdmx/validator-php。
然后导入命名空间,创建一个新的 Validator 实例,添加您的验证规则并调用 validate 方法
# Import namespace use Validator\Validator; # Create a validator instance and add some rules $validator = Validator::newInstance() ->addRule('name', $name) ->addRule('email', $email, 'email') ->addRule('password', $password) ->addRule('confirm', $confirm, 'equal', $password) ->validate(); # And check the result if (! $validator->isValid() ) { $errors = $validator->getErrors(); foreach ($errors as $error) { echo $error->message; } }
isValid 方法将在某些东西不正确时返回 false,在所有规则通过时返回 true。
在失败的情况下,您可以调用 getErrors 方法,它将返回一个包含具有 name 和 message 字段的对象数组,以便您可以告知用户验证失败的原因。
添加规则
要添加验证规则,您必须调用 addRule 方法,它具有以下签名
addRule($name, $value, $type = 'required', $opt = null) { ... }
$name 参数标识规则并将用于错误报告,而 $value 指的是您要检查的变量。
$opt 允许您根据 $type 的值传递额外的数据,$type 的值如下所述。
规则类型
您可以为 $type 指定以下任何内置规则类型
required- 必填字段,如果该字段为null或空,则规则将失败email- 电子邮件字段,通过浏览器中 W3C 的电子邮件字段正则表达式进行检查regex- 通过正则表达式检查的字段,在$opt中传递表达式equal- 必须等于另一个字段的字段,在$opt中传递另一个字段的值checkboxes- 适用于复选框,为了使规则成功,其值必须是一个非空arrayat least- 适用于复选框,为了使规则成功,其值必须是一个非空array,其中包含至少 n 项。在$opt中传递所需的数量at most- 适用于复选框,为了使规则成功,其值必须是一个包含最多 n 项的array。在$opt中传递所需的数量
自定义规则
有两种方法可以添加自定义规则,第一种也是最容易的方法是将 Closure 作为规则 opt 传递
$validator->addRule('Name', $name, 'custom', function($value) { # We do not accept Homers return $name != 'Homer'; });
该函数接收 $value 并必须返回验证结果 true 或 false,任何不是 true 的都会使规则失败。
此方法适用于一次性验证规则。
第二种方法旨在用于您将在多个地方使用且/或需要复杂逻辑的验证规则。为此,您需要创建一个扩展 Rule 并实现 check 方法的类
class CustomRule extends Rule { public function check() { $ret = $name != 'Homer'; if (! $ret ) { $message = sprintf('We do not accept Homers'); throw new ValidationException($this, $message); } return $ret; } }
请注意,在验证失败时,您必须抛出 ValidationException 并返回与上述情况相同的 true 或 false。
现在您已经创建了您的规则类,只需将其名称作为规则类型传递即可
$validator->addRule('Name', $name, CustomRule::class);
如您所见,自定义验证类提供了更多的控制,因为您还可以指定失败消息。
您还可以传递一个额外的 $opt 参数,该规则将其存储在其自己的 $opt 成员中。
许可
此软件在 MIT 许可下发布。
版权所有 © 2021 biohzrdmx
本软件及其相关文档文件(以下简称“软件”)的使用权在此免费授予任何获取副本的个人,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许获得软件的个人进行此类操作,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权或其他行为中,无论是源于、因之或与软件或软件的使用或其他处理有关。
致谢
主要程序员: biohzrdmx github.com/biohzrdmx