继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

php中对象是引用类型吗?

html5零基础入门学习
关注TA
已关注
手记 246
粉丝 81
获赞 518

这貌似是一个极其简单的问题,还用得着专门写一篇博文?各位看官,最初我也这么认为,但这的确蒙蔽了你那水灵灵的小眼睛,不妨看看什么是引用?

$a = 10;

$b = &$a;

$b = 20;

var_dump($a,$b);

在这段极其简单的代码中,$b是$a的引用,也即是别名,修改$b,$a会变,反之亦然。这就是所谓的引用,那对象是不是也是这样的呢?

class A

{

public $num = 10;

}

$a = new A();

$a->num = 20;

function demo($b)

{

$b[0] = 5;

var_dump($b);

}

demo($a)

var_dump($a);

你会发现两次输出一样,那这是不是说明对象做函数参数时是引用传参呢?在这一点上不得不说千锋的学生的确是勤学好问,我刚开始以为是引用传参,但同学提出如果你把demo里修改为:

function demo($b)

{

$b = new A();

var_dump($b);

}

两次输出并不一样!这是为什么呢?如果从C语言角度讲,PHP里的任何变量,包括对象都是指针,对象做参数相当于二重指针,所以当$b指向一个全新的对象后,并不影响$obj,所以对象做函数参数并不是引用传参!又这么一帮勤学好问的学生,整个水准都不一样了。


互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP