0

我最初的问题是如何进行尊重验证的动态链接。

我的实现如下,

    $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();
        }
   }

当验证具有参数时,我所做的方式是错误的,因为如果有超过 2 个参数,则会失败。所以我想要的是根据每个验证接受多少参数来动态分配参数。这就像动态链接验证。

4

1 回答 1

0

乍一看,我不确定这是否是个好主意。但是我不知道您要解决的问题,如果您真的需要从数组创建验证器,您可以使用call_user_func()or call_user_func_array()

就像是:

$validator = v::notEmpty();
foreach ($validations as $validation) {
    call_user_func_array(
        [$validator, $validation['validatorName']],
        $validation['params']
    );
}
于 2018-04-06T08:41:25.957 回答