尽管相信 PHP 中对象是按引用传递的,但赋值运算符不会创建副本。以下示例代码演示了此行为:
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; set_b($a); print $a->b; print $c->b;
在这种情况下,两个 print 语句都将输出“after”,表明该对象已被 set_b() 函数修改,尽管该对象作为
要在 PHP 中创建对象的副本,可以使用 PHP 5 中引入的克隆运算符:
$objectB = clone $objectA;
这个操作创建一个独立于原始对象的新对象。对一个对象所做的任何更改都不会影响另一个对象。
需要注意的是,在 PHP 中只有对象通过引用传递。其他类型的变量(例如数组、字符串和整数)是按值传递的。这意味着将这些变量分配给其他变量会创建该变量的新实例,而不是对原始变量的引用。
以上是如何在 PHP 中创建对象的真实副本?的详细内容。更多信息请关注PHP中文网其他相关文章!