foreach ($form as $fieldName => $fieldValue) {
$validationType = $validationCriterias[ $fieldName ] ?? null;
if ($validationType) { // is "username" at that point
call_user_func($validationType);
}
}
function username()
{
global $form;
if (! v::alnum('-_')->noWhitespace()->length(2, 30)->validate($form[ 'username' ])) {
$this->formErrorBag[ 'username' ] = 'User name must be between 2 and 30 characters please. No whitespace or special charactesr allowed, but "_" and "-" characters are allowed.';
}
}
在这段代码中,凡在环路代表,我有一个字符串“用户名”是$ validationType。 然后,我需要调用循环下面的函数用户名。
我试图用call_user_func,但它给这个错误:
'call_user_func() expects parameter 1 to be a valid callback, function 'username' not found or invalid function name'
什么叫从字符串“用户名”的用户名()的正确方法?
编辑:这段代码已经在类方法中,所以如果可能的话,我需要从循环内访问用户名()范围。
是在这个foreach()的相同范围内的username()函数?因为如果$ validationType真的是用户名,那么应该调用用户名。他们在一个班级或不同的文件? –
确切地说,username()和foreach()都在同一个作用域内,它们都在类方法中。 –
我认为函数用户名应该在另一个方法内,这就是为什么call_user_func()没有找到它。 bnest将重构,将用户名作为当前方法之外的另一种方法,并使用$ this - > $ validationType()来代替。 –