PHP经验分享程序员

PHP对象赋值

2017-03-19  本文已影响0人  tinyPhper

PHP中传值赋值运算将变量的值拷贝到新的变量中,所以改变其中一个不会影响另外一个。普通的传值赋值行为中有个例外就是对象赋值。

class SimpleClass{

public $var='';

}

$instance=newSimpleClass();

$assigned=$instance;

$reference=&$instance;

$instance->var='$assigned will have this value';

$instance=null;// $instance and $reference become nullvar_dump($instance);

var_dump($reference);

var_dump($assigned);

输出:

NULL

NULL

object(SimpleClass)#1 (1) {["var"]=>string(30) "$assigned will have this value"}

分析代码:

$instance=newSimpleClass();//新建实例,$instance指向这个对象

$assigned=$instance;//$assigned也指向$instance所指向的对象

$reference=&$instance;//$reference指向$instance

如图:

$instance->var='$assigned will have this value';//给对象的var属性赋值

$instance = null;//$instance指向空,而$assigned还指向对象

参考:

https://www.zhihu.com/question/35710455

上一篇下一篇

猜你喜欢

热点阅读