php对象在内存中的存在形式分析

借用代码分析对象在内存中的存储;代码如下:

classPerson{
public$name;
public$age;
}
$a= newPerson();
$a->name = "小明";
$a->age=80;
$b=$a;
$b->age=85;
echo$b->name;
echo$a->age;
?>

输出结果为:小明 85

分析如下:

(1)$a对应内存地址,假设是0x123,($a和地址存放在栈区,相当于我们查字典时的索引);
(2)通过内存地址的索引,找到堆区。堆区里面存放着”小明“,”80“等数据
(3)$b= $a,实际上是将$a的内存地址0x123传给$b,堆区里的属性$name,$age不变,也就是不会再重新复制一份。所以,在改变$b->age=85时,$a->age的值也改变了。

php对象在内存中的存在形式分析_第1张图片


你可能感兴趣的:(php对象在内存中的存在形式分析)