Webman 无内置 Validator 类,需用 youloge/webman.validate 或 jeckleee/tools 等第三方组件;new Validator() 报错因类未定义且未自动加载;正确方式是 useValidate($params, $rules) 或 Validator::make()->validate()。

Webman 没有内置的 Validator 类或全局验证器——所谓“Webman 内置 Validator 规则”是常见误解。实际项目中,你用的几乎都是第三方验证组件,比如 youloge/webman.validate 或 jeckleee/tools,它们不是 Webman 核心的一部分,但能无缝集成。
为什么直接 new Validator() 会报错
因为 Webman 的 src/Support/Validator.php(如果存在)只是空壳或未注册类;官方文档也从未声明提供 Validator 实例化接口。你看到的 new Validator() 报 Class 'Validator' not found,根本原因是 PHP 找不到这个类定义。
- Webman 默认不 autoload 任何验证器类,
Validator不在框架命名空间下 - 即使手动
use Validator,也没对应实现文件 - 部分教程截图里的
Validator实际来自jeckleee/tools插件,需显式安装和配置
useValidate() 怎么正确调用(youloge/webman.validate)
这是目前 Webman 生态中最轻量、最贴近原生写法的表单处理方案,规则字符串驱动,适合 API 层快速过滤+校验。
- 安装:
composer require youloge/webman.validate - 规则语法用
|分隔,:带参数,例如:"name|required|strTrim|strLength:2,20" - 调用时必须传三参:
useValidate($params, $rules, $filter),第三个参数默认true,设为false可保留未定义字段 - 注意:
$params必须是关联数组,不能是对象或原始 JSON 字符串(需先json_decode(..., true))
示例:
Webman 2.2.0版本强化了 TCP/UDP 服务支持,优化路由组管理,并增强异步任务处理能力。结合协程与连接池技术,Webman 能轻松应对高并发场景,适用于网站、接口服务、即时通讯、物联网及游戏开发,兼具高性能、灵活扩展与稳定可靠,是多场景 PHP 服务开发的理想选择。
$data = $_POST;
$rules = [
'email' => 'required|email',
'age' => 'required|int|betweenNumber:18,120'
];
$result = useValidate($data, $rules);
if (isset($result['err'])) {
return json(['msg' => $result['msg']], 400);
}
// $result 是清洗后的数组,可直接入库
jeckleee/tools 的 Validator 链式写法踩坑点
它提供更面向对象的体验,但配置稍重,容易在初始化阶段失败。
- 必须提前发布配置:
php webman plugin:publish jeckleee/tools,否则error_return_mode等设置不生效 - 验证失败默认抛异常,不是返回数组——若没用
try/catch包裹,会直接 500 -
requiredWith('field')要求被依赖字段存在且非空;若传['field' => null],它仍判为“不存在”,导致跳过验证 - 批量验证用
Validator::make($data, $rules)->validate(),但validate()返回布尔值,错误信息得从异常里捞:$e->errors()
别把 Webshim 或 jQuery Validate 当 Webman 功能
Webshim 是纯前端 HTML5 补丁库,jQuery Validate 是 DOM 操作型插件——它们跟 Webman 的后端验证完全无关。你在 Webman 控制器里写 $('#form').validate() 不会起任何作用,因为服务端收不到 JS 运行结果。
- 前端验证只能防误操作,不能替代后端校验
- Webman 接口必须独立完成验证逻辑,不能依赖前端传来的“已验证”标记
- 前后端规则尽量保持一致(比如 email 格式、长度),避免用户提交成功却入库失败
真正要写的,永远是控制器里那几行 useValidate() 或 Validator::make()->validate() ——其余都是干扰项。

















