在PHP 中建立物件副本
PHP 物件本質上是透過引用傳遞的,使得物件的分配只需分配另一個對原始物件的引用目的。為了解決這個問題並建立獨立的物件副本,PHP 提供了克隆運算子。
透過引用傳遞的原因
在 PHP 中,物件實際上是對記憶體區域的引用包含物件的資料。透過引用傳遞可確保函數內對物件所做的任何修改都會反映在原始物件中,從而保留了物件導向程式設計的初衷。
物件克隆運算子
克隆運算子是專門為建立物件的副本而設計的。透過使用 $clonedObject = clone $originalObject,將會建立一個具有與原始物件相同的屬性和值的新物件。克隆的物件是一個完全獨立的實體,對任何一個物件所做的任何更改都不會影響另一個物件。
範例用法
考慮以下範例:
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; // Assignment creates another reference to $a set_b($a); print $a->b; // Outputs "after" print $c->b; // Also outputs "after"
在此範例中,將$a 指派給$c 建立對相同物件的引用。當呼叫 set_b($a) 時,對原始物件進行更改,同時影響 $a 和 $c。
要達到所需的結果,可以使用以下克隆:
$a = new A(); $a->b = "before"; $c = clone $a; // Creates an independent copy of $a set_b($a); print $a->b; // Outputs "after" print $c->b; // Outputs "before" (not affected by changes to $a)
在這種情況下,$c 是一個單獨的對象,不受 $a 修改的影響。
以上是如何使用克隆運算子在 PHP 中建立獨立的物件副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!