直接地说,这可能是不可能的 - 但是,如果您既可以控制正在实现的函数又可以控制调用它的代码 - 那么您可能会发现一个合适的解决方法。
您是否可以接受必须将有问题的变量嵌入到对象中?如果您这样做,代码将(在某种程度上)看起来像这样。
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中的对象变量只是对对象内容的引用---因此,如果将对象传递给函数,则该函数对对象内容所做的任何更改都将反映在调用函数可以访问的内容中。
只需确保调用函数从不对对象变量本身进行赋值 - 或者这将导致函数基本上丢失引用。函数所做的任何赋值语句都必须严格针对对象的内容。