You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义ValidateID验证规则报错:Function name must be a string,求原因

解决自定义验证规则调用时的"Function name must be a string"错误

嘿,这个错误的原因很清晰——你把数组变量$rules当成函数来调用啦!

看你代码里的这一行:

$rules([ "ID" =>['required', 'string', new ValidateID()] ]);

你一开始已经把$rules定义成了一个空数组:$rules = [];,结果后面误用了函数调用的语法$rules(...)。PHP会把这种写法识别为“调用名为$rules的函数”,但实际上$rules是一个数组变量,不是字符串类型的函数名,所以就抛出了"Function name must be a string"的错误。

正确的做法是给数组$rules添加键值对,而不是用函数调用的写法。修正后的代码如下:

public function store(Request $request, $id, $slug = null, Validator $validator){ 
    $rules = []; 
    $messages = []; 
    $rules["name"] = 'required|max:255|string'; 
    // 改为数组赋值语法,添加ID字段的验证规则
    $rules["ID"] = ['required', 'string', new ValidateID()]; 
}

这样调整写法后,错误就会消失啦,本质是你混淆了数组赋值和函数调用的语法~

内容的提问来源于stack exchange,提问作者user9659025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:12:03