PHP物件導向之&引用

lanyu發表於2021-09-09

中,可以引用的有變數,函式,物件。引用符號統一用&。 
引用,實際上就是用不同的名字訪問同一個變數內容。引用不是指標,不指向實際的記憶體。 
PHP中的引用並不是通常意義的引用,並不是指標,就行PHP中的過載並不是真正的過載一樣!!! 
連結:

1.變數引用

指多個變數名指向同一個變數,每次改動都影響其他指向此位置的變數。

變數引用的一個常見用法是引用傳遞,將實參的引用傳到方法中,從而實現在方法中改變原資料。 
注意在函式呼叫時沒有引用符號——只有函式定義中有。

2.函式的引用返回

當函式有返回值時,可以透過函式引用的形式,在函式外部更改函式的返回值。可以認為是將函式返回值所佔用的記憶體引用傳遞給函式外部的變數,使兩個變數表示同一塊記憶體。 
函式的引用返回,就是將函式的返回值當做引用。

$a = f();改變$a並不會影響函式f()的返回值,但是$a = &f();在改變$a時同時影響函式f()的返回值。

3.物件引用

PHP中,物件的複製預設就是透過引用傳遞來實現,$o2 = $o1執行時,實際就是將$o1的引用複製給$o2,兩個物件實際上是同一個。

物件複製

參考:

如果我們想建立物件的副本,需要使用clone關鍵字(這將呼叫物件的 __clone()方法)。物件中的 __clone() 方法不能被直接呼叫。

當用 clone 複製物件後,PHP 5 會對物件的所有屬性執行一個淺複製(shallow copy)。所有的基本屬性會複製到新的儲存空間,但是引用屬性仍然會是一個指向原來的變數的引用。可以在要複製的物件中自定義 __clone() 方法,複製物件完成後會自動呼叫 __clone() 方法,可用於修改屬性的值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2804570/,如需轉載,請註明出處,否則將追究法律責任。

相關文章