在 PHP 中建立物件副本
PHP 以獨特的方式處理物件參考。與流行的看法相反,物件是透過引用傳遞的,這意味著將物件分配給另一個變數不會建立副本。在賦值後修改原始物件時,這種行為變得很明顯。
範例:
考慮以下PHP 程式碼片段:
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; // This line creates a reference to $a, not a copy set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after'
在此例如,將$a 指派給$c 建立對$a的引用而不是副本。當 set_b() 函數修改 $a 物件時,變更會反映在 $a 和 $c 中。
解決方案:使用克隆
PHP 5 及更高版本提供克隆運算子來建立物件的真實副本。透過使用克隆,您可以按值傳遞對象,並確保對原始對象的修改不會影響副本。
$objectB = clone $objectA; // Creates a copy of $objectA
重要提示:
它值得一提的是,在 PHP 中只有物件是透過引用傳遞的。原始資料類型(例如整數、字串和布林值)始終按值傳遞。
以上是如何在 PHP 中建立物件的真實副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!