直接,也可能是不可能的 - 但是,如果你有控制两个以上的功能要实现和电话它的代码 - 然后是一个工作,身边有你可能找到适当。
您是否需要将有问题的变量嵌入到对象中?如果你这样做的话,代码会看起来(有点)像这样。
function toBeCalled($par_ref) {
$parameter = $par_ref->parameter;
//...Do Something...
$par_ref->parameter = $parameter;
}
$changingVar = 'passThis';
$parembed = new stdClass; // Creates an empty object
$parembed->parameter = array($changingVar);
call_user_func_array('toBeCalled', $parembed);
你看,PHP对象变量仅仅是一个参考向对象的内容 ---所以,如果你传递一个对象给一个函数,任何改变,该功能使得在该对象的内容内容将反映在调用函数也可以访问的内容中。
只要确保调用函数从来不分配给对象变量本身 - 或将导致功能,基本上失去参考。该功能所做的任何赋值语句必须严格为至该对象的内容。
这个方案投以严格的能...警告“不推荐使用:通话时传递的引用已被弃用” – Archenoth 2013-03-17 20:51:37
我不知道PHP的,但我的5.3.3服务器上的新版本当我使用`call_user_func(“函数”,&$参数)`我得到了弃用的消息。当我切换到`call_user_func_array`时,它解决了这个问题。所以然后我检查了STRICT启用,仍然没有得到消息,所以我认为这是一个可以接受的方式来做到这一点。 – Lightbulb1 2014-07-11 15:51:09