PHP中对象的传值方式
Posted 好好耕耘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中对象的传值方式相关的知识,希望对你有一定的参考价值。
对象的传值方式:
为什么对于对象,值传递和引用传递,这个情况下,他们似乎没有区别???
这要从对象的数据的存储方式来理解:
$o1 = new C1(); //这里创建一个对象o1,其存储结果如图所示:
这里,实际上,变量$o1中,存储的数据只是一个“对象编号#1”,这个对象编号,才会去指向对象数据new C1(); 该编号数据,我们不能控制,只是系统内部的分配。
则$o2 = $o1; 作为值传递,实际复制的是该对象的编号:结果情形是:
在语法上,对对象变量的属性进行操作,其实就是通过该编号来指向对象而操作的。
$o1->p1 = 2; //此时,就是通过对象编号#1去修改了对象(new C1() )本身的内部数据.
echo $o2->p1; //此时相当于取得变量$o2所包含的编号#1中所指向的对象(new C1() )的内部数据p1
那么,对应引用传递,情况是这样的:
$o3 = new C1(); //又创建一个对象,图示如下:
然后:
$o4 = & $o3; //引用传递,则其后,他们的关系图示为:
所以:
$o3->p1 = 2; //
echo $o4->p1; //输出2
以上是关于PHP中对象的传值方式的主要内容,如果未能解决你的问题,请参考以下文章