所以我有一個奇怪的問題,其中的函數不是通過引用參數傳遞來定義的,但是對象正在以我無法解釋的方式進行更改。我已經驗證函數定義不是通過參考時間和時間再次。我從DB中檢索了一個對象。然後我對該初始對象運行分析功能。我已將該對象複製到另一個變量。然後我在副本上運行不同的分析功能,而不是原始的。運行第二個分析函數似乎改變了第一個變量對象。關於可能發生在這裏的任何想法。我一直試圖在幾個小時內調試幾個小時,我無法解釋這種行爲。我不想發佈實際功能,因爲它們是專有信息,但是,我可能會私下發送它們以獲得一些幫助。我非常感謝你的幫助。PHP通過引用問題
//get object from db
$resp= json_decode($ln->getResponseFromDb($resultid));
//run pwf analysis function
$resp = $ln->pwfBGCheck($resp);
//show result after pwf
print_r($resp->pwf);
/* shows
* stdClass Object ([status] => p [reason] => Person has no c record.)
*/
//copy to another variable
$r2 = $resp;
//run pwf for s record other variable so it is not touching the first one!
$r2 = $ln->pwfBGCheckSexOffender2($r2);
echo '<BR>this is first variable<BR>';
print_r($resp->pwf);
/* copies from second to first for some reason... no pass by reference on this call... resp variable has not been touched!
* stdClass Object ([status] => p [reason] => Person has no s record.)
*/
echo '<BR>this is second<BR>';
print_r($r2->pwf);
/* returns
* stdClass Object ([status] => p [reason] => Person has no s record.)
*/
但是,當我使用clone關鍵字'$ r2 = clone $ resp;'時,我仍然得到相同的結果,這非常有幫助。 –
「克隆」僅爲克隆當前對象。如果你想克隆屬性對象,你必須定義'__clone'方法:this - > _ property_object = clone $ this - > _ property_object;開啓這個例子:http://us1.php.net/manual/en/language.oop5.cloning.php#example-224 – sectus