PHP 7.1中出现Function name must be a string错误的原因咨询
错误原因分析
这个致命错误出现在代码的第31行return $this->$res['event']();,核心问题是**$res['event']的值不是有效的字符串类型**,导致PHP无法识别要调用的方法名。
具体触发场景包括:
bff::route()方法返回的$res['event']可能是null、数字、数组等非字符串类型,你的判断逻辑只处理了$res['event'] === false的情况,没有覆盖其他非字符串的无效值。- 存在
$res数组中根本没有'event'键的可能,这时$res['event']会被解析为null,直接触发错误。 - 第三个路由规则
'blog/(page\d+\/?'的正则表达式不完整,缺少闭合的),这可能导致bff::route()解析路由时异常,返回不符合预期的$res['event']值。
验证与修复建议
- 先确认
bff::route()的实际返回值:在$res = bff::route(...);后添加var_dump($res); exit;,查看$res的结构和event字段的类型、具体值。 - 完善判断逻辑,覆盖更多无效情况:
if (!isset($res['event']) || !is_string($res['event']) || !method_exists($this, $res['event'])) { $res['event'] = 'listing'; } - 修复不完整的正则表达式:
'blog/(page\d+\/?)' => 'blog/listing/page=$1',
内容的提问来源于stack exchange,提问作者Владимир
相关产品推荐
相关产品推荐

