ahmetbarut / validation
PHP表单验证
Requires
- php: >=7.4.23
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
。您需要在接口中添加两个方法:check
和message
。在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();