我正在尝试减少发送到我的apache服务器日志的警告.
一个警告是:
已弃用调用时传递引用.
这是我很难想象为什么这个被废弃了,因为它是这样一个有用的编程功能,基本上我这样做:
public function takeScriptsWithMarker(&$lines, $marker) {
...
}
Run Code Online (Sandbox Code Playgroud)
我调用这个函数重复从它得到结果并处理它们,但也让数组$ lines通过重复发送到这个方法来建立.
因此,由于不推荐使用call-by引用,获得此模式功能的"可接受方式"是什么:即将字符串数组发送到方法中,让方法更改它们,然后继续使用阵列?
Ion*_*tan 51
实际上,定义函数的方式没有问题.调用函数的方式有问题.所以对于你的例子,而不是像下面那样调用它:
takeScriptsWithMarker(&$lines, $marker);
Run Code Online (Sandbox Code Playgroud)
你会这样称呼:
takeScriptsWithMarker($lines, $marker); // no ampersands :)
Run Code Online (Sandbox Code Playgroud)
因此该功能仍然可用.但我不知道这种变化背后的原因.
如上面在上一个答案中所述,问题是在CALL时间,而不是定义时间..因此您可以将函数定义为:
function foo(&$var1,$var2,$var3=null){
// procesing here
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给:
$return = foo($invar1,$invar2);
Run Code Online (Sandbox Code Playgroud)
你的第一个invar是通过引用传递的,第二个不是.
当您尝试这样调用时出现错误:
$return = foo(&$invar1,$invar2);
Run Code Online (Sandbox Code Playgroud)