第一種情況:
$james1 = $james; // 獨立的兩個變量引用同樣的對象。
$james = null; // 銷毀一個變量$james,另外一個$james1變量還在運行,因為這兩個變量指向的是同一對象,所以不觸發(fā)析構函數(shù)。
第二種情況:
$james2 = &$james; // 兩個變量綁定在一起引用同樣的對象。
$james = null; // 銷毀一個變量$james2,另外一個被綁定在一起的$james2變量同樣被銷毀了,對象調用完畢,觸發(fā)析構函數(shù)
$james1 = $james; // 獨立的兩個變量引用同樣的對象。
$james = null; // 銷毀一個變量$james,另外一個$james1變量還在運行,因為這兩個變量指向的是同一對象,所以不觸發(fā)析構函數(shù)。
第二種情況:
$james2 = &$james; // 兩個變量綁定在一起引用同樣的對象。
$james = null; // 銷毀一個變量$james2,另外一個被綁定在一起的$james2變量同樣被銷毀了,對象調用完畢,觸發(fā)析構函數(shù)
2016-03-23
$james = null這里講的有點水。
可能有人會誤解成這一句就是為了觸發(fā)析構函數(shù)的功能。
這里的實際意義應該是$james對象被強制清除(等于$james對象運行結束),此時就會觸發(fā)析構函數(shù)。
比如:
$james = null;// $james對象被清除,對象運行結束,觸發(fā)析構函數(shù)
echo $james->name; // 這里調用$james對象已經無效了,因為$james對象已經被清除。
可能有人會誤解成這一句就是為了觸發(fā)析構函數(shù)的功能。
這里的實際意義應該是$james對象被強制清除(等于$james對象運行結束),此時就會觸發(fā)析構函數(shù)。
比如:
$james = null;// $james對象被清除,對象運行結束,觸發(fā)析構函數(shù)
echo $james->name; // 這里調用$james對象已經無效了,因為$james對象已經被清除。
2016-03-22