unicframework / validator
Validator 是一个用于 PHP 的服务器端数据验证库。我们可以验证 HTML 表单数据、对象、数组以及 JSON 等。
v1.5.2
2021-05-02 12:38 UTC
Requires
- php: >=5.6
README
Validator 是一个用于 PHP 的服务器端数据验证库。它可以验证 HTML 表单数据、对象、数组以及 JSON 等。Validator 使得数据验证变得简单。
安装
- 如果没有安装,请安装
composer
。
composer require unicframework/validator
设置验证规则
我们可以使用 rules
方法来设置数据验证规则。
use Validator\Validator; // Set data validation rules $validator = Validator::make([ 'first_name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'last_name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'email' => [ 'required' => true, 'not_null' => true, 'email' => true ], 'gender' => [ 'required' => true, 'not_null' => true, 'in' => ['male', 'female'] ], 'password' => [ 'required' => true, 'not_null' => true, 'minlength' => 6 ] ]);
我们还可以使用简写方法来设置数据验证规则,这样非常简单且简洁。
use Validator\Validator; // Set data validation rules $validator = Validator::make([ 'first_name,last_name' => 'required|not_null|string', 'email' => 'required|not_null|email', 'gender' => 'required|not_null|in:male,female', 'password' => 'required|not_null|minlength:6' ]);
设置错误信息
我们可以使用 messages
方法来设置错误信息。如果我们没有设置错误信息,那么验证器会自动为您生成错误信息。
use Validator\Validator; // Set validation error messages $validator = Validator::make([ 'first_name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'last_name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'email' => [ 'required' => true, 'not_null' => true, 'email' => true ], 'gender' => [ 'required' => true, 'not_null' => true, 'in' => ['male', 'female'] ], 'password' => [ 'required' => true, 'not_null' => true, 'minlength' => 6 ] ], [ 'first_name' => [ 'required' => 'First name is required', 'not_null' => 'First name can not be null', 'string' => 'First name should be in string' ], 'last_name' => [ 'required' => 'Last name is required', 'not_null' => 'Last name can not be null', 'string' => 'Last name should be in string' ], 'email' => [ 'required' => 'Email is required', 'not_null' => 'Email can not be null', 'email' => 'Please enter valid email address' ], 'gender' => [ 'required' => 'Gender is required', 'not_null' => 'Gender can not be null', 'in' => 'Please select valid gender' ], 'password' => [ 'required' => 'Password is required', 'not_null' => 'Password can not be null', 'minlength' => 'Password length should be minimum 5 characters' ] ]);
我们还可以使用简写方法来设置数据验证规则,这样非常简单且简洁。
use Validator\Validator; // Set validation error messages $validator = Validator::make([ 'first_name,last_name' => 'required|not_null|string', 'email' => 'required|not_null|email', 'gender' => 'required|not_null|in:male,female', 'password' => 'required|not_null|minlength:6' ], [ 'first_name,last_name' => 'required:Name is required|not_null:Name can not be null|string:Name should be in string', 'email' => 'required:Email is required|not_null:Email can not be null|email:Please enter valid email address', 'gender' => 'required:Gender is required|not_null:Gender can not be null|in:Please select valid gender', 'password' => 'required: Password is required|not_null:Password can not be null|minlength:Password length should be minimum 5 characters', ]);
验证数据
使用 validator,我们可以验证 HTML 表单数据、数组、对象和 JSON 数据。Validator 将根据规则验证数据。如果所有数据都有效,则返回 true
,否则返回 false
。
验证单个数据
use Validator\Validator; $validator = Validator::make([ 'name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'gender' => [ 'required' => true, 'not_null' => true, 'string' => true, 'lowercase' => true, 'in' => ['male', 'female', 'other'] ], 'contact.email' => [ 'required' => true, 'not_null' => true, 'email' => true, ] ], [ 'contact.email' => [ 'required' => 'Please enter email address.', 'email' => 'Please enter valid email address.' ] ]); // Data for validation // We can validate any data like arrays, objects, and json etc. $data = [ 'name' => 'abc xyz', 'gender' => 'male', 'contact' => [ 'email' => 'abc@gmail.com' ] ]; // Validate data if($validator->validate($data)) { //Ok data is valid } else { // Display validation errors print_r($validator->errors(); }
验证多组数据
use Validator\Validator; $validator = Validator::make([ 'name' => [ 'required' => true, 'not_null' => true, 'string' => true ], 'gender' => [ 'required' => true, 'not_null' => true, 'string' => true, 'lowercase' => true, 'in' => ['male', 'female', 'other'] ], 'contact.email' => [ 'required' => true, 'not_null' => true, 'email' => true, ] ], [ 'contact.email' => [ 'required' => 'Please enter email address.', 'email' => 'Please enter valid email address.' ] ]); // Data for validation // We can validate any data like arrays, objects, and json etc. $data = [ [ 'name' => 'abc xyz', 'gender' => 'male', 'contact' => [ 'email' => 'xyz@gmail.com' ] ], [ 'name' => 'xyz abc', 'gender' => 'male', 'contact' => [ 'email' => 'xyz@gmail.com' ] ] ]; // Validate multiple sets of data if($validator->validate($data, true)) { // Ok data is valid } else { // Display validation errors print_r($validator->errors()); }
获取无效错误
我们可以使用 errors
方法来获取错误。该方法返回一个错误数组。
// Get all errors $errors = $validator->errors();
获取有效数据
我们可以使用 getValidData
方法获取有效的解析数据。该方法返回一个有效数据的数组。
// Get all valid data $errors = $validator->getValidData();
获取无效数据
我们可以使用 getInvalidData
方法获取无效的解析数据。该方法返回一个无效数据的数组。
// Get all invalid data $errors = $validator->getInvalidData();
设置验证规则
Validator 有许多预定义的验证规则。
设置自定义规则
我们可以为数据验证设置预定义/自定义规则。自定义规则接受一个带有单个参数的回调函数。如果自定义规则返回 true
,则表示数据有效;如果返回 false
,则表示数据无效。
// Set validation rules $validator = Validator::make([ 'email' => [ 'required' => true, 'not_null' => true, 'email' => true, // Set your own custom rules 'blocked' => function($value) { if($value == 'abc@gmail.com') { // Email abc@gmail.com is blocked return false; } else { return true; } }, // Set your own custom rules 'available' => is_available($value), ] ], [ // Set error messages for custom rules 'email' => [ 'blocked' => 'this email address is blocked', 'available' => 'this email address is already registered', ] ]);