如何在php中仅使用引用而不复制对象参数

如何在php中仅使用引用而不复制对象参数,php,object,copy,pass-by-reference,pass-by-value,Php,Object,Copy,Pass By Reference,Pass By Value,我有一个函数,需要将信息传递给它。信息包含在一个对象中。因此,我必须将该对象作为函数参数之一传递。然而,该对象非常大,我希望在每次传递它时减少复制所涉及的开销。下面是一个例子 我的函数调用: 1 myFunction($myObject1); 以及功能: 2 function myFunction($myObject2){ 3 //do stuff 4 } 我理解php中不仅仅是通过引用传递还是通过值传递。如果我错了,请纠正我,但我相信在第1行中只有对所制作对象的引用,但在第2行中,对象被

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

1 myFunction($myObject1);
以及功能:

2 function myFunction($myObject2){
3  //do stuff
4 }
我理解php中不仅仅是通过引用传递还是通过值传递。如果我错了,请纠正我,但我相信在第1行中只有对所制作对象的引用,但在第2行中,对象被复制。为了避免此副本,我将
($myObject2)
替换为
(&$myObject2)
。我仍然将函数定义中的对象称为
$myObject2
,并且似乎一切都正常。我相信我现在只使用引用,因此没有复制对象(这是我的目标)。我的想法正确吗?如果不是,为什么?

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

赋值和按值传递仅复制值。由于对象不是值,因此无法通过赋值、传递等方式克隆对象。复制对象的唯一方法是使用
clone
操作符


&
放在变量上,使其通过引用传递或赋值,而不是通过不带
&
的值传递或赋值。通过引用传递允许修改传递的变量。因为变量的值不能是对象,所以这与对象无关。

所以我总体上仍然感到困惑,但这似乎意味着:1)添加
&
在这种情况下根本没有任何作用。2) 多次来回传递大型对象将具有非常低的开销,而无需执行任何特殊操作。@VoltzRoad:2是正确的,因为您不能传递对象,只能传递(或分配或处理)指向对象的指针。1不正确-添加
&
使其通过引用传递;而没有
&
则是按值传递。