ahmetbarut/validation

PHP表单验证

v1.0.3 2021-09-21 13:57 UTC

This package is auto-updated.

Last update: 2024-09-22 15:27:23 UTC


README

关于验证

此验证包允许您轻松地验证表单。它基于简单逻辑。规则定义、将规则注入到对象中、使用规则。

Illuminate\Validation受Laravel启发。

特性

  • 自定义规则
  • 自定义错误消息
  • 易于使用

要求

  • composer
  • php >= 7.4.23

简单使用

在安装包之前,让我们看看它的简单使用

$validation = new ahmetbarut\Validation\Validate();

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "number"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

setFields方法允许您以数组的形式提供表单字段。setRules方法允许我们指定将通过规则的字段。make方法执行列出的操作并返回结果。在成功的情况下返回true,在失败的情况下返回错误消息。

规则

规则定义了相关输入字段需要满足的条件。也就是说,在正常情况下,我们只接受数字和1-9之间的值。如果我们有多个表单字段,那么我们可能需要不断地复制和粘贴。但是在这里,我们编写规则后,就不需要这样做,只需写一次就可以反复使用,并且还可以避免混乱。

安装与规则定义

安装

为了安装,我们需要composer。您可以从getcomposer.com下载。

    composer require ahmetbarut/validation

如果您的应用程序中使用了容器,那么在容器中创建对象会更健康。

规则定义

为了定义规则,首先您需要实现这个接口ahmetbarut\Validation\Validation\Rule。您需要在接口中添加两个方法:checkmessage。在check方法中,您可以编写条件并相应地返回布尔值。在message方法中,如果失败,将返回相关消息。示例类

namespace ahmetbarut\Validation\Validation\Rules;

use ahmetbarut\Validation\Validation\Rule;

class Number implements Rule
{

    public function check(string $attr, string $value): bool
    {
        return is_numeric($value);
    }

    public function message(): string
    {
        return "Sayısal olmalıdır!";
    }
}

为了将此类注入到对象中,我们可以在创建对象时提供它。同时,在请求到达或请求传递的地方创建对象,后续情况不需要这样做。也就是说,如果需要定义规则,则必须按照我说明的方式进行。在后续情况下,由于保存规则的变量是static的,因此创建对象时不会丢失之前的数据。

定义规则有一个规则,即必须以数组的形式给出。例如 ["kural_adi" => Kural::class],规则所需的名字和类名即namespace。让我们定义规则

use ahmetbarut\Validation\Validate;
use ahmetbarut\Validation\Validation\Rule;

require_once "./vendor/autoload.php";

class Number implements Rule
{

    public function check(string $attr, string $value): bool
    {
        return is_numeric($value);
    }

    public function message(): string
    {
        return "Sayısal olmalıdır!";
    }
}

$validation = new ahmetbarut\Validation\Validate(["numara" => \Number::class]);

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "numara"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

如果您想通过对象获取提供的表单字段

$validation = new ahmetbarut\Validation\Validate(["numara" => \Number::class]);

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "numara"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

$validation->getAllFields();

参数传递

规则可以分配参数。但是,在分配参数之前,相关规则必须定义__construct方法。除此之外,不需要任何其他添加。

$validation = new ahmetbarut\Validation\Validate();

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required",  new Max(50)],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

$validation->getAllFields();