biohzrdmx/validator-php

服务器端表单验证大受欢迎

3.0 2021-03-30 23:09 UTC

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 方法,它将返回一个包含具有 namemessage 字段的对象数组,以便您可以告知用户验证失败的原因。

添加规则

要添加验证规则,您必须调用 addRule 方法,它具有以下签名

addRule($name, $value, $type = 'required', $opt = null) { ... }

$name 参数标识规则并将用于错误报告,而 $value 指的是您要检查的变量。

$opt 允许您根据 $type 的值传递额外的数据,$type 的值如下所述。

规则类型

您可以为 $type 指定以下任何内置规则类型

  • required - 必填字段,如果该字段为 null 或空,则规则将失败
  • email - 电子邮件字段,通过浏览器中 W3C 的电子邮件字段正则表达式进行检查
  • regex - 通过正则表达式检查的字段,在 $opt 中传递表达式
  • equal - 必须等于另一个字段的字段,在 $opt 中传递另一个字段的值
  • checkboxes - 适用于复选框,为了使规则成功,其值必须是一个非空 array
  • at 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 并必须返回验证结果 truefalse,任何不是 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 并返回与上述情况相同的 truefalse

现在您已经创建了您的规则类,只需将其名称作为规则类型传递即可

$validator->addRule('Name', $name, CustomRule::class);

如您所见,自定义验证类提供了更多的控制,因为您还可以指定失败消息。

您还可以传递一个额外的 $opt 参数,该规则将其存储在其自己的 $opt 成员中。

许可

此软件在 MIT 许可下发布。

版权所有 © 2021 biohzrdmx

本软件及其相关文档文件(以下简称“软件”)的使用权在此免费授予任何获取副本的个人,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许获得软件的个人进行此类操作,但须遵守以下条件

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

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权或其他行为中,无论是源于、因之或与软件或软件的使用或其他处理有关。

致谢

主要程序员: biohzrdmx github.com/biohzrdmx