在 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中文网其他相关文章!