0

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

1 myFunction($myObject1);

和功能:

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

我知道在 php 中它不仅仅是传递引用与传递值。如果我错了,请纠正我,但我相信在第 1 行只有对所创建对象的引用,但在第 2 行复制了对象。为了避免这个副本,我($myObject2)(&$myObject2). 我仍然在函数定义中引用该对象,$myObject2并且一切似乎都正常工作。我相信我现在只使用引用,因此不复制对象(这是我的目标)。我的想法正确吗?如果不是不是为什么?

4

1 回答 1

0

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

赋值和按值传递仅复制值。由于对象不是值,因此它们永远无法通过赋值、传递等方式进行克隆。复制对象的唯一方法是使用clone运算符。

放置&一个变量使其通过引用传递或赋值,而不是没有&. 通过引用传递允许您修改传递的变量。由于变量的值不能是对象,因此这与对象无关。

于 2013-05-02T03:17:56.710 回答