🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# PHP Rakit 验证教程 > 原文: [https://zetcode.com/php/rakitvalidation/](https://zetcode.com/php/rakitvalidation/) PHP Rakit 验证教程展示了如何使用 Rakit 验证包来验证 PHP 值。 ## Rakit 验证 Rakit 验证是一个 PHP 独立验证库。 它是受 Laravel 的`Illuminate\Validation`启发的。 ## 安装 ```php $ composer require rakit/validation $ composer require tightenco/collect ``` 我们安装了 Rakit 验证包和 Laravel 的集合包。 ## 简单的例子 在第一个示例中,我们展示了如何进行非常简单的验证。 `simple.php` ```php <?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"; } ``` 该示例验证一个必需值。 ```php use Rakit\Validation\Validator; ``` 我们包括验证器。 ```php $validator = new Validator; ``` 我们创建`Validator`的实例。 ```php $vals = ['name' => '']; $rules = ['name' => 'required']; ``` `$vals`包含要验证的值。 `$rules`包含验证规则。 在我们的情况下,需要`name`值。 ```php $validation = $validator->make($vals, $rules); ``` 使用`make()`方法,我们准备验证; 我们通过值和规则。 ```php $validation->validate(); ``` 我们使用`validate()`进行验证。 ```php if ($validation->fails()) { ``` 使用`fails()`,我们检查验证是否失败。 ```php $coll = collect($validation->errors()); $messages = $coll->flatten(); foreach ($messages as $message) { echo $message . "\n"; } ``` 我们使用 Laravel 的集合来分析错误。 ```php $ php simple.php The Name is required ``` 这是输出。 ## 验证规则 Rakit 验证包含一组预定义规则,例如`required`,`email`,`min`,`max`或`url`。 规则可以与`|`字符结合使用。 `rules.php` ```php <?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"; } ``` 该示例使用了多个验证规则。 ```php $rules = ['name' => 'required', 'email' => 'required|email', 'password' => 'required|min:6', 'confirm_password' => 'required|same:password']; ``` 我们有四个验证规则。 必须输入`email`,必须是有效的电子邮件地址。 `password`是必需的,并且必须至少包含六个字符。 `confirm_password`必须与`password`相同。 ```php $ php rules.php The Email is not valid email The Password minimum is 6 The Confirm password must be same with password ``` 该示例以三个验证失败结束。 ## 验证日期 下一个示例显示如何验证日期。 `dates.php` ```php <?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"; } ``` 该示例验证两个日期。 ```php $vals = ['born' => '2000-03-30', 'meetingDate' => '2010-12-31']; $rules = ['born' => 'before:2018-12-31', 'meetingDate' => 'after:2019-02-02']; ``` 使用`before`规则,我们验证给定的日期在某个日期之前,并且使用`after`规则,我们验证给定的日期在某个日期之后。 ```php $ php dates.php The MeetingDate must be a date after 2019-02-02. ``` This is the output. ## 自定义消息 我们可以提供自定义验证消息。 消息作为第三个参数传递给`make()`方法。 `custom_message.php` ```php <?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"; } ``` 该示例添加了一条自定义消息。 ```php $msgs = ['name' => 'The name is compulsory']; ``` 这是我们的自定义消息。 ```php $validation = $validator->make($vals, $rules, $msgs); ``` 消息将传递到`make()`方法。 ```php $ php custom_message.php The name is compulsory ``` This is the output. ## 验证 GET 数据 在以下示例中,我们验证 GET 数据。 `get_data.php` ```php <?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 请求的名称和电子邮件参数。 ```php $rules = ['name' => 'required', 'email' => 'required|email']; $validation = $validator->make($_GET, $rules); ``` `make()`方法将全局`$_GET`变量作为第一个参数。 ```php $ php -S localhost:8000 PHP 7.2.11 Development Server started at Sat Feb 2 21:22:23 2019 Listening on http://localhost:8000 Document root is C:\Users\Jano\Documents\php-progs\rakit-val Press Ctrl-C to quit. ``` 我们启动内置的 Web 服务器。 ```php $ curl "localhost:8000/get_data.php?name=John%20Doe&email=john.doe#gmail.com" The Email is not valid email ``` 我们使用`curl`工具创建带有两个参数的 GET 请求。 您可能也对以下相关教程感兴趣: [PHP Respect 验证教程](/php/respectvalidation/), [Valitron 教程](/php/valitron/), [PHP PDO 教程](/php/pdo/), [PHP 文件系统函数](/articles/phpfilesystemfunctions/) , [PHP 教程](/lang/php/)。 在本教程中,我们使用 Rakit 验证来验证 PHP 值。