如果你需要在规则定义的过程中动态获取一些数据,你可以使用此解析器。
use Itwmw\Validate\Support\Traits\RuleParamsParser;
use Itwmw\Validate\Validate;
class Validator extends Validate
{
use RuleParamsParser;
}
规则参数解析器可以完成以下功能:
以下代码均为示例,不考虑其实用性
方法调用
使用 {#function}
可以调用方法,包括全局方法,当前类下的方法,指定类中的静态方法
class Validator extends Validate
{
use RuleParamsParser;
protected $rule = [
'password' => 'required|max:{#getPasswordMaxSize}'
];
public function getPasswordMaxSize(): int
{
return 18;
}
}
支持调用指定类中的静态方法,需要使用完整命名空间,如:
max:{#App\\Helper\\Constant::getPasswordMaxSize}
属性获取
使用{->property}
来获取当前类的属性,多级类引用使用 ->
分隔,如:{->user->name}
,数组引用,使用 .
分割,如:{->user.info->nickname}
class Validator extends Validate
{
use RuleParamsParser;
protected int $passwordMaxSize = 18;
protected $rule = [
'password' => 'required|max:{->passwordMaxSize}'
];
}
环境变量
使用{@env}
来获取环境变量中的值
putenv('PASSWORD_MAX_SIZE=18');
class Validator extends Validate
{
use RuleParamsParser;
protected int $passwordMaxSize = 18;
protected $rule = [
'password' => 'required|max:{@PASSWORD_MAX_SIZE}'
];
}
字段引用
使用{:field}
来获取字段的值
class Validator extends Validate
{
use RuleParamsParser;
protected int $passwordMaxSize = 18;
protected $rule = [
'password_length' => 'required|integer|min:6|max:20',
'password' => 'required|max:{:password_length}'
];
}
支持对数组成员的引用,用法:
{:field.field.index....}