PHP Rakit 验证
最后修改于 2025 年 2 月 16 日
PHP Rakit 验证教程展示了如何使用 Rakit 验证包验证 PHP 值。
Rakit 验证
Rakit 验证 是一个 PHP 独立验证库。它的灵感来自 Laravel 的 Illuminate\Validation
。
安装
$ composer require rakit/validation $ composer require tightenco/collect
我们安装 Rakit 验证包和 Laravel 的集合包。
简单示例
在第一个例子中,我们展示了如何进行一个非常简单的验证。
<?php require('vendor/autoload.php'); use Rakit\Validation\Validator; $validator = new Validator; $vals = ['name' => '']; $rules = ['name' => 'required']; $validation = $validator->make($vals, $rules); $validation->validate(); if ($validation->fails()) { $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } } else { echo "Validation passed"; }
该例子验证一个必填值。
use Rakit\Validation\Validator;
我们包含验证器。
$validator = new Validator;
我们创建 Validator
的实例。
$vals = ['name' => '']; $rules = ['name' => 'required'];
$vals
包含要验证的值。 $rules
包含验证规则。 在我们的例子中, name
值是必需的。
$validation = $validator->make($vals, $rules);
使用 make
方法,我们准备验证; 我们传递值和规则。
$validation->validate();
我们使用 validate
执行验证。
if ($validation->fails()) {
使用 fails
,我们检查验证是否失败。
$coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; }
我们使用 Laravel 的集合来解析错误。
$ php simple.php The Name is required
验证规则
Rakit 验证包含一组预定义的规则,例如 required
、email
、min
、max
或 url
。
规则可以使用 |
字符组合。
<?php require 'vendor/autoload.php'; use Rakit\Validation\Validator; $validator = new Validator; $vals = ['name' => 'John Doe', 'email' => 'johndoe#gmail.com', 'password' => '12345', 'confirm_password' => '23456']; $rules = ['name' => 'required', 'email' => 'required|email', 'password' => 'required|min:6', 'confirm_password' => 'required|same:password']; $validation = $validator->make($vals, $rules); $validation->validate(); if ($validation->fails()) { $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } } else { echo "Validation passed"; }
该例子使用几个验证规则。
$rules = ['name' => 'required', 'email' => 'required|email', 'password' => 'required|min:6', 'confirm_password' => 'required|same:password'];
我们有四个验证规则。 email
是必需的,必须是有效的电子邮件地址。 password
是必需的,并且必须至少包含六个字符。 confirm_password
必须与 password
相同。
$ php rules.php The Email is not valid email The Password minimum is 6 The Confirm password must be same with password
该例子以三个验证失败结束。
验证日期
下一个例子展示了如何验证日期。
<?php require('vendor/autoload.php'); use Rakit\Validation\Validator; $validator = new Validator; $vals = ['born' => '2000-03-30', 'meetingDate' => '2010-12-31']; $rules = ['born' => 'before:2018-12-31', 'meetingDate' => 'after:2019-02-02']; $validation = $validator->make($vals, $rules); $validation->validate(); if ($validation->fails()) { $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } } else { echo "Validation passed"; }
该例子验证了两个日期。
$vals = ['born' => '2000-03-30', 'meetingDate' => '2010-12-31']; $rules = ['born' => 'before:2018-12-31', 'meetingDate' => 'after:2019-02-02'];
使用 before
规则,我们验证给定日期是否在某个日期之前,使用 after
规则,我们验证给定日期是否在某个日期之后。
$ php dates.php The MeetingDate must be a date after 2019-02-02.
自定义消息
我们可以提供自定义验证消息。 这些消息作为第三个参数传递给 make
方法。
<?php require('vendor/autoload.php'); use Rakit\Validation\Validator; $validator = new Validator; $vals = ['name' => '']; $rules = ['name' => 'required']; $msgs = ['name' => 'The name is compulsory']; $validation = $validator->make($vals, $rules, $msgs); $validation->validate(); if ($validation->fails()) { $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } } else { echo "Validation passed"; }
该例子添加了一个自定义消息。
$msgs = ['name' => 'The name is compulsory'];
这是我们的自定义消息。
$validation = $validator->make($vals, $rules, $msgs);
消息被传递给 make
方法。
$ php custom_message.php The name is compulsory
验证 GET 数据
在下面的例子中,我们验证 GET 数据。
<?php require('vendor/autoload.php'); use Rakit\Validation\Validator; $validator = new Validator; $rules = ['name' => 'required', 'email' => 'required|email']; $validation = $validator->make($_GET, $rules); $validation->validate(); if ($validation->fails()) { $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } } else { echo "Validation passed"; }
该例子验证来自 GET 请求的 name 和 email 参数。
$rules = ['name' => 'required', 'email' => 'required|email']; $validation = $validator->make($_GET, $rules);
make
方法将全局 $_GET
变量作为第一个参数。
$ php -S localhost:8000 [Wed Jul 13 15:08:56 2022] PHP 8.1.2 Development Server (https://:8000) started
我们启动内置的 Web 服务器。
$ curl "localhost:8000/get_data.php?name=John%20Doe&email=john.doe#gmail.com" The Email is not valid email
我们使用 curl
工具创建具有两个参数的 GET 请求。
来源
在本文中,我们使用 Rakit 验证来验证 PHP 值。
作者
列出所有 PHP 教程。