0

0

ThinkPHP验证器怎么编写_ThinkPHP验证器规则定义及数据校验实战

星夢妙者

星夢妙者

发布时间:2025-11-22 20:19:15

|

695人浏览过

|

来源于php中文网

原创

ThinkPHP验证器通过继承think\Validate类定义规则和提示信息,支持require、email、number等内置规则,并可设置场景化验证。在控制器中实例化验证器并调用check方法校验数据,错误时返回getError信息,保障数据安全。

thinkphp验证器怎么编写_thinkphp验证器规则定义及数据校验实战

ThinkPHP 的验证器是用于数据校验的重要工具,尤其在接收用户提交的表单或接口参数时,能有效防止非法或不完整数据进入系统。本文将带你了解 ThinkPHP 验证器的编写方式、规则定义方法,并通过实战示例掌握实际应用。

验证器的基本结构

在 ThinkPHP 中,通常通过继承 think\Validate 类来创建自定义验证器。验证器中主要包含两个属性:rule(定义验证规则)和 message(定义错误提示信息)。

以下是一个基础的验证器类结构:

namespace app\validate;

use think\Validate;

class UserValidate extends Validate
{
    protected $rule = [
        'name'  => 'require|max:25',
        'email' => 'require|email',
        'age'   => 'number|between:1,120',
    ];

    protected $message = [
        'name.require' => '姓名不能为空',
        'name.max'     => '姓名最多不能超过25个字符',
        'email.require' => '邮箱必须填写',
        'email.email'   => '邮箱格式不正确',
        'age.number'    => '年龄必须是数字',
        'age.between'   => '年龄必须在1到120之间',
    ];
}

常用验证规则说明

ThinkPHP 提供了丰富的内置验证规则,可以直接在 rule 中使用:

立即学习PHP免费学习笔记(深入)”;

  • require:字段必填
  • numberinteger:必须为数字或整数
  • float:必须为浮点数
  • email邮箱格式
  • url:URL 格式
  • mobile:手机号格式
  • alpha:只能为字母
  • alphaNum:字母和数字
  • alphaDash:字母、数字、下划线和破折号
  • chs:只能为汉字
  • chsAlpha:汉字、字母
  • chsAlphaNum:汉字、字母、数字
  • length:5:长度为5
  • length:5,20:长度在5到20之间
  • between:1,100:数值范围在1到100之间
  • in:1,2,3:值必须在指定集合中
  • regex:正则表达式:自定义正则匹配

场景化验证设置

同一个字段在不同操作中可能需要不同的验证规则,比如“添加用户”和“编辑用户”时对密码的处理。这时可以使用 scene 方法定义验证场景。

X Detector
X Detector

最值得信赖的多语言 AI 内容检测器

下载
protected $scene = [
    'add'  => ['name', 'email', 'password'],
    'edit' => ['name', 'email'],
];

在控制器中调用指定场景:

$validate = new \app\validate\UserValidate();
if (!$validate->scene('add')->check($data)) {
    return $validate->getError();
}

控制器中使用验证器实战

下面是一个典型的控制器方法,演示如何使用验证器进行数据校验:

namespace app\controller;

use app\validate\UserValidate;
use think\facade\Request;

class UserController
{
    public function create()
    {
        $data = Request::post();

        $validate = new UserValidate();
        if (!$validate->check($data)) {
            return json(['code' => 400, 'msg' => $validate->getError()]);
        }

        // 验证通过,继续业务逻辑
        return json(['code' => 200, 'msg' => '数据合法']);
    }
}

如果需要更灵活的临时规则验证,也可以不用定义验证器类,直接使用:

$validate = new \think\Validate([
    'name'  => 'require|max:25',
    'email' => 'require|email'
]);

if (!$validate->check($data)) {
    return $validate->getError();
}

基本上就这些。ThinkPHP 验证器机制清晰、功能强大,合理使用可以大幅提升开发效率和数据安全性。掌握规则定义与场景控制,就能应对大多数业务校验需求。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

247

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

737

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

211

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

349

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

232

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

528

2023.12.06

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.6万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号