我怎样才能使用引用,并且不在php中创建对象参数的副本

时间:2013-05-01 15:21:25

标签: php object copy pass-by-reference pass-by-value

我有一个需要传递信息的函数。信息包含在对象中。因此,我必须将该对象作为函数参数之一传递。然而,该对象非常大,我希望减少每次传递时制作副本所涉及的开销。这是一个例子 我的函数调用:

1 myFunction($myObject1);

和功能:

2 function myFunction($myObject2){
3  //do stuff
4 }

据我所知,在php中还有更多内容,而不仅仅是传递引用和传递值。如果我错了,请纠正我,但我相信在第1​​行只有对象的引用,但在第2行,对象被复制。为避免此副本,我已将($myObject2)替换为(&$myObject2)。我仍然将函数定义中的对象称为$myObject2,一切似乎都有效。我相信我现在只使用参考,因此没有制作对象的副本(这是我的目标)。我的想法是否正确?如果不是为什么?

1 个答案:

答案 0 :(得分:0)

在PHP5中,"对象"不是价值观。变量$myObject1$myObject2的值是对象引用(即指向对象的指针)。你不能得到对象本身&#34 ;;对象只能通过这些指针进行操作。

分配和传递值仅复制值。由于对象不是值,因此无法通过赋值,传递等来克隆它们。复制对象的唯一方法是使用clone运算符。

&置于变量上会使其通过引用传递或分配,而不是通过&的值传递。通过引用传递允许您修改传递的变量。由于变量的值不能是对象,因此与对象无关。