If you need to dynamically fetch data during rule definitions, you can utilize this parser.
use Itwmw\Validate\Support\Traits\RuleParamsParser;
use Itwmw\Validate\Validate;
class Validator extends Validate
{
use RuleParamsParser;
}
The Rule Parameters Parser facilitates several functionalities:
- Parsing method calls within parameters
- Parsing property retrievals within parameters
- Parsing environment variables within parameters
- Parsing field references within parameters
Note The following examples are for illustration purposes and do not account for practical usage scenarios.
Method Invocation
Use {#function}
to invoke methods, including global functions, methods within the current class, or static methods in a specified class.
class Validator extends Validate
{
use RuleParamsParser;
protected $rule = [
'password' => 'required|max:{#getPasswordMaxSize}'
];
public function getPasswordMaxSize(): int
{
return 18;
}
}
Supports calling static methods from a specified class using the full namespace, for example:
max:{#App\\Helper\\Constant::getPasswordMaxSize}
Passing Parameters
If the method requires parameters, you can add them after the method name, like this: {#getPasswordMaxSize(18)}
. These parameters also support using property retrievals, environment variables, and field references.
Property Retrieval
Retrieve properties of the current class using {->property}
. For multi-level class references, use ->
; for array references, use .
. Examples: {->user->name}
and {->user.info->nickname}
.
class Validator extends Validate
{
use RuleParamsParser;
protected int $passwordMaxSize = 18;
protected $rule = [
'password' => 'required|max:{->passwordMaxSize}'
];
}
Environment Variables
Fetch values from environment variables using {@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 References
To get the value of a field, use {: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}'
];
}
Supports referencing array elements with syntax:
{:field.field.index...}
.