PHP 7中Only variables should be passed by reference错误解决问询
解决PHP 7中"Only variables should be passed by reference"错误
错误原因
PHP 7对引用参数的校验更严格:被声明为引用(带&)的参数,必须传入实际变量,不能直接传递表达式、函数返回值或字面量——因为引用需要指向一个可寻址的内存空间,临时值不满足这个要求。
修改方案(仅修改Line A,无需改动goAhead方法)
把原本直接传给goAhead()的非变量值,先赋值给临时变量,再将临时变量传入方法。
举个实际代码修改示例:
假设原Line A代码是:
$sapDiagram->goAhead($_POST['input_b'], explode(',', $_POST['input_c']));
修改后:
// 先将表达式结果存入临时变量 $tempInputC = explode(',', $_POST['input_c']); // 传递临时变量给引用参数 $sapDiagram->goAhead($_POST['input_b'], $tempInputC);
为什么不修改goAhead方法
因为该方法在多处代码中被调用,移除参数前的&会破坏现有逻辑——比如其他调用处可能依赖引用传递来修改外部变量,改动后会导致这些场景失效。因此优先修改Line A的调用逻辑更安全。
内容的提问来源于stack exchange,提问作者flash
相关产品推荐
相关产品推荐

