PHPRakit验证教程展示了如何使用RakitValidation包验证PHP值。
$ php -v php -v PHP 8.1.2 (cli) (built: Aug 8 2022 07:28:23) (NTS) ...
我们使用PHP版本8.1.2。
Rakit验证
RakitValidation是一个PHP独立验证库。它的灵感来自Laravel的Illuminate\Validation。
安装
$ composer require rakit/validation $ composer require tightenco/collect
我们安装了RakitValidation包和Laravel的collection包。
简单例子
在第一个示例中,我们展示了如何进行非常简单的验证。
<?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
这是输出。
验证规则
RakitValidation包含一组预定义的规则,例如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必须是有效的电子邮件地址。密码是必需的,并且必须至少包含六个字符。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请求中的姓名和电子邮件参数。
$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 (http://localhost:8000) started
我们启动内置的网络服务器。
$ curl "localhost:8000/get_data.php?name=John%20Doe&email=john.doe#gmail.com" The Email is not valid email
我们使用curl工具创建一个带有两个参数的GET请求。
在本教程中,我们使用RakitValidation来验证PHP值。
列出所有PHP教程。
