當深入研究PHP 中的物件複製
在PHP 中使用物件時,重要的是要了解它們本質上是透過引用傳遞的。這意味著對函數內的物件所做的任何更改也會影響原始物件。根據具體情況,這種行為可能有利也有弊。
在您的特定範例中,您希望賦值 $c = $a 來建立物件 $a 的副本。然而,由於物件是透過引用傳遞的,$c 實際上與 $a 指向同一個物件。因此,隨後對 set_b($a) 的呼叫會修改 $a 和 $c,因為它們實際上是同一個物件。
要在 PHP 中真正建立物件的副本,您需要使用複製操作員。此運算子建立一個新對象,其屬性和值與原始對象相同,但記憶體位址不同。透過使用克隆運算符,您可以確保對克隆物件所做的更改不會影響原始物件。
以下是在程式碼中實作複製的方法:
$objectB = clone $objectA;
此行將建立一個新物件 $objectB,它是 $objectA 的副本。對 $objectB 所做的任何更改都不會影響 $objectA,反之亦然。
值得注意的是,並非所有物件都可以複製。具有循環引用或實作 __clone() 方法的物件可能無法正確複製。在這種情況下,您可能需要透過單獨指派每個屬性來手動建立物件的副本。
以上是如何建立 PHP 物件的真實副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!