Wolff\Utils\Validation
The Wolff Validation class makes incredibly easy the process of validating incoming data.
The validation utility takes a main array which will be used to test against another array containing the conditions that the main array must match.
The following keys can be used in the elements of the fields array.
min_len: The minimum length of the variable.
max_len: The maximum length of the variable.
min_val: The minimum value of the variable (treating it as a number).
max_val: The maximum value of the variable (treating it as a number).
regex: The regular expression that the variable must met.
type: The type of the variable, the available options are email
, alphanumeric
, alpha
, int
, float
, bool
.
$data = [
'name' => 'Thomas Andrews',
'age' => 39,
];
$fields = [
'name' => [
'minlen' => 10,
],
'age' => [
'minval' => 18,
],
];
$validation = new Validation();
$validation->setData($data);
$validation->setFields($fields);
Running the following code should return true
:
$validation->isValid();
The fields
array has multiple elements, each one is an array containing the conditions that the key with the same name in the main array must meet. In this case the name
field must have a minimum length of 10 characters and the age
must have a minimum value of 18. Only if all of those conditions are met the isValid
method will return true.
A more expressive example
$data = [
'name' => 'Thomas Andrews',
'age' => 39,
];
$fields = [
'name' => [
'minlen' => 10,
'type' => 'alpha',
],
'age' => [
'minval' => 18,
'type' => 'int',
]
];
$validation = new Validation();
$validation->setData($data);
$validation->setFields($fields);
In that case the isValid
method will return true
only if the name has a minimum length of 10 characters and contains only letters, and the age has a minimum value of 18 and is of type int, meaning that a string containing: 18
isn't valid.
The setData
and setFields
methods can be chained.
$validation->setData($data)->setFields($fields);
setData(array $arr): \Wolff\Utils\Validation
Sets the array which will be used to validate.
$validation->setData($array);
setFields(array $fields): \Wolff\Utils\Validation
Sets the array which contains the fields definitions.
$validation->setFields($fields);
getInvalidValues(): array
Returns an array with all the invalid values.
$validation->getInvalidValues();
If the age
key doesn't not meet the minimum value condition and the name
key doesn't not meet the minimum length, it should return this:
Array
(
[name] => Array
(
[0] => minlen
)
[age] => Array
(
[0] => minval
)
)
An associative array where every element is an array of conditions that the element didn't meet.
isValid(): bool
Returns true
if the array matches with all the conditions, false
otherwise.
$validation->isValid();
check($fields, $data): bool
This is just syntactic sugar for the call to setFields
, setData
and isValid
methods in that order.
The first parameter is the fields array, the second is the data to validate array.
This method returns true
if the given data array meets the conditions in the given fields array.
$validation->check($fields, $data);