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

借用代码分析对象在内存中的存储; 代码如下:
【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对象在内存中的存在形式分析
文章图片




    推荐阅读