php中对象是引用类型吗?

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

$a = 10;函数

$b = &$a;指针

$b = 20;对象

var_dump($a,$b);io

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

class Aclass

{变量

public $num = 10;引用

}demo

$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-php培训的实力派

相关文章
相关标签/搜索