valitron是零依赖的轻量级php验证库,通过composer require vlucas/valitron安装后,引入vendor/autoload.php即可使用;需显式声明use valitron\validator或用全限定名new valitron\validator($data),规则调用顺序必须为rule('类型', '字段'),错误消息默认英文,中文需手动映射。

直接执行 composer require vlucas/valitron 就能用,不需要框架支持
Valitron 本身是纯 PHP 的轻量验证库,不依赖任何框架,Composer 安装后即可在任意 PHP 脚本中 require 使用。它不注册自动加载器以外的全局服务,也不会修改 $_POST 或绑定路由——你传什么数据,它验什么数据。
安装命令跑完后,确保项目根目录下有 vendor/autoload.php,后续只需引入它即可使用 Valitron\Validator 类:
<?php require_once 'vendor/autoload.php';
$data = ['email' => 'test@example.com', 'age' => '25'];
$v = new Valitron\Validator($data);
$v->rule('required', ['email', 'age']);
$v->rule('email', 'email');
$v->rule('integer', 'age');
if ($v->validate()) {
echo "验证通过";
} else {
print_r($v->errors());
}
别漏掉 use 声明或完整命名空间,否则会报 Class 'Valitron\Validator' not found
Valitron 的类在 Valitron 命名空间下,但它的 Composer autoloader 默认按 PSR-4 映射 Valitron\ → src/,所以必须显式声明命名空间或用全限定名。
- 推荐写法(清晰且不易错):
use Valitron\Validator;,然后直接new Validator($data) - 如果没写
use,就得写全称:new Valitron\Validator($data) - 常见错误:只写
new Validator($data)且没use——PHP 找不到这个类,直接 fatal error
规则方法名和参数顺序容易写反,比如 rule('required', 'email') 是对的,rule('email', 'required') 会静默失败
Valitron 的 rule() 第一个参数是验证类型(字符串),第二个及之后是字段名或字段数组。顺序反了不会报错,但规则根本不会生效——因为 'email' 不是内置规则名,'required' 也不是字段名,验证器直接跳过。
- 正确:
$v->rule('required', 'email')、$v->rule('minLength', 'name', 3) - 错误:
$v->rule('email', 'required')(把字段当规则)、$v->rule('minLength', 3, 'name')(参数顺序错,3 被当字段名) - 复合规则如
matches需要第三个参数:$v->rule('matches', 'password_confirm', 'password')
中文错误消息需要手动替换,Valitron 默认只有英文
Valitron 不内置多语言支持,$v->errors() 返回的全是英文字符串(如 "Email is required")。要显示中文,不能靠配置开关,得自己映射:
- 最简方式:遍历
$v->errors()结果,用str_replace或array_map替换关键词(适合少量字段) - 更可靠方式:调用
$v->labels(['email' => '邮箱', 'age' => '年龄']),再配合自定义 message 模板(需提前设置Validator::lang('zh')并提供翻译数组) - 注意:
Validator::lang('zh')只是设语言标识,不自带翻译;真正生效要靠setMessages()注入键值对,例如:Validator::setMessages(['required' => '{field} 为必填项'])
字段名里的中文空格、特殊字符容易导致匹配失败,建议 label 和字段名保持一致或严格控制命名。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











