直接运行 composer require respect/validation 安装 v3.x(PHP ≥ 8.1),PHP 7.4–8.0 需指定 ^2.2;必须 require 'vendor/autoload.php' 否则类找不到;v3 推荐 Validator::create() 实例化,静态链式调用已弃用;中文提示需提前执行 Respect\Language\Language::load('zh_CN')。

Composer 安装 respect/validation 的正确命令
直接运行 composer require respect/validation 即可安装最新稳定版(v3.x)。它会自动写入 composer.json 并下载依赖到 vendor/。注意:v3 要求 PHP ≥ 8.1,如果你用的是 PHP 7.4–8.0,请显式指定 v2:composer require respect/validation:^2.2。
加载验证器前必须执行 require vendor/autoload.php
没这行代码,所有 Respect\Validation\Validator 类都会报 Class not found。常见错误是只写了 use 语句却忘了引入自动加载器:
// ✅ 正确 require 'vendor/autoload.php'; use Respect\Validation\Validator; // ❌ 错误(即使 use 写对了也会 fatal error) use Respect\Validation\Validator; // 缺少 autoload 加载,直接 new Validator() 会失败
Validator::create() 和直接调用静态方法的区别
v3 中推荐用 Validator::create() 实例化新验证器,而不是反复调用 Validator::string()->length(3, 10) 这类静态链式调用——后者在 v3 已被标记为 deprecated,未来版本会移除。实际影响包括:
- 静态调用可能触发
Deprecated: Calling static method ... is deprecated警告 - 实例方式更利于复用和单元测试(比如注入不同配置)
-
Validator::create()返回对象,支持方法链、assert()、check()和validate()三种校验模式
示例:
$v = Validator::create();
$v->string()->length(3, 10)->assert('abc'); // 通过
$v->email()->assert('test@domain'); // 抛出 exception
中文错误消息需要手动加载语言包
默认错误提示是英文,不加额外配置不会自动变中文。要显示中文,得手动注册语言文件:
- 先确认已安装
respect/language(v3 会自动带,v2 需单独composer require respect/language) - 加载中文语言包:
Respect\Language\Language::load('zh_CN'); - 必须在创建验证器或调用
assert()前执行,否则无效
常见坑:把 Language::load() 放在 assert() 后面,或者放在条件分支里漏执行,结果还是英文报错。










