0

My initial question was how to do dynamic chaining of Respect validations.

My implementation was like following,

    $validator = v::notEmpty();

    foreach ($validations as $validation) {
        $variable = (string)$validation['validatorName'];
        if (sizeof($validation['params']) > 0) {
            $validator = $validator->$variable($validation['params'][0],$validation['params'][1]);
        } else {
            $validator = $validator->$variable();
        }
   }

When a validation has parameters the way that I have done was wrong because if there are more than 2 parameters this fails . So what I wanted was to dynamically assign parameters according to how many parameters that each validation accepts. It's like dynamically chaining the validations.

Yasiru Nilan
  • 447
  • 5
  • 28

1 Answers1

0

I'm not sure if that's a good idea, at the first sight. However I don't know the problem you're trying to fix, if you really need to create validators from an array, you could use call_user_func() or call_user_func_array().

Something like:

$validator = v::notEmpty();
foreach ($validations as $validation) {
    call_user_func_array(
        [$validator, $validation['validatorName']],
        $validation['params']
    );
}