直接,也可能是不可能的 - 但是,如果你有控制兩個以上的功能要實現和電話它的代碼 - 然後是一個工作,身邊有你可能找到適當。
您是否需要將有問題的變量嵌入到對象中?如果你這樣做的話,代碼會看起來(有點)像這樣。
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