文档结构如下图:

控制中包含两个方法,test1()在调用User类中的验证规则进行验证,test3()将验证规则写在控制器中直接验证,称为独立验证。
控制器代码如下:
<?php
namespace app\index\controller;
use app\validate\User;
use think\Controller;
//use app\facade\User; //采用静态代理方式调用时使用
//use think\facade\Validate; //采用静态代理方式调用时使用
class Demo9 extends Controller
{
public function test1()
{
//准备验证数据
$data = [
'name' => 'Peter',
'email' => 'p@php.cn',
'password' => '123abc',
'mobile' => '18911112222'
];
//验证器
//第一种方法:
$validate = new User();
if (!$validate->check($data)){
return $validate->getError();
}
return '验证通过';
//第二种方法:静态代理
// if (!User::check($data)){
// return User::getError();
// }
// return '验证通过';
}
public function test3()
{
//创建验证规则
$rule = [
'name|<span style="color: red">姓名</span>' =>[
'require',
'min' => 5,
'max' =>10,
],
'email|<span style="color: red">邮箱</span>' => [
'require',
'email' => 'email',
],
'password|<span style="color: red">密码</span>' => [
'require',
'min' => 3,
'max' => 10,
'alphaNum'
],
'mobile|<span style="color: red">手机</span>' => [
'require',
'mobile'
]
];
//添加字段的验证规则:初始化rule属性
Validate::rule($rule);
//准备要验证的数据
$data = [
'name' => 'Peter',
'email' => 'p@php.cn',
'password' => '123abc',
'mobile' => '18911112222'
];
//如果验证不通过,直接输出错误
if (!Validate::check($data)){
return Validate::getError();
}
return '<h3 style="color: green" >验证通过!~</h3>';
}
}User类文件名为User.php,代码内容:
<?php
namespace app\validate;
use think\Validate;
class User extends Validate
{
//当前验证的规则
protected $rule = [
'name|姓名' =>[
'require',
'min' => 5,
'max' =>10,
],
'email|邮箱' => [
'require',
'email' => 'email',
],
'password|密码' => [
'require',
'min' => 3,
'max' => 10,
'alphaNum'
],
'mobile|手机' => [
'require',
'mobile'
]
];
}User类的静态代理代码如下:
<?php
namespace app\facade;
use think\Facade;
class User extends Facade
{
protected static function getFacadeClass()
{
return 'app\validate\User';
}
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号