PHP Rakit 验证教程展示了如何使用 Rakit 验证包来验证 PHP 值。
Rakit 验证
Rakit 验证是一个 PHP 独立验证库。 它是受 Laravel 的Illuminate\Validation启发的。
安装
$ composer require rakit/validation$ composer require tightenco/collect
我们安装了 Rakit 验证包和 Laravel 的集合包。
简单的例子
在第一个示例中,我们展示了如何进行非常简单的验证。
simple.php
<?phprequire('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.phpThe Name is required
这是输出。
验证规则
Rakit 验证包含一组预定义规则,例如required,email,min,max或url。
规则可以与|字符结合使用。
rules.php
<?phprequire '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.phpThe Email is not valid emailThe Password minimum is 6The Confirm password must be same with password
该示例以三个验证失败结束。
验证日期
下一个示例显示如何验证日期。
dates.php
<?phprequire('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.phpThe MeetingDate must be a date after 2019-02-02.
This is the output.
自定义消息
我们可以提供自定义验证消息。 消息作为第三个参数传递给make()方法。
custom_message.php
<?phprequire('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.phpThe name is compulsory
This is the output.
验证 GET 数据
在以下示例中,我们验证 GET 数据。
get_data.php
<?phprequire('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:8000PHP 7.2.11 Development Server started at Sat Feb 2 21:22:23 2019Listening on http://localhost:8000Document root is C:\Users\Jano\Documents\php-progs\rakit-valPress Ctrl-C to quit.
我们启动内置的 Web 服务器。
$ curl "localhost:8000/get_data.php?name=John%20Doe&email=john.doe#gmail.com"The Email is not valid email
我们使用curl工具创建带有两个参数的 GET 请求。
您可能也对以下相关教程感兴趣: PHP Respect 验证教程, Valitron 教程, PHP PDO 教程, PHP 文件系统函数 , PHP 教程。
在本教程中,我们使用 Rakit 验证来验证 PHP 值。
