轻松玩转类与对象的内存关系

1:   把代码段加载到代码区,进行编译,优化;

2:   执行代码;

2.1:   执行$p = new Person;

2.1.1:  在栈开辟一段内存空间存放变量$p;

2.1.2:   执行new Person,发现是类实例化得到对象,会在堆区开辟内存空间保护对象;

2.2.3:   把类中的属性保存到对象中,会把对象的内存地址赋值给变量;

2.1.4:   在对象的内部有一个隐藏域指向对应的类,连接类与对象的关系;

2.2:   执行$p->getSex();

2.2.1:   在栈中找到是否存在变量$p,存在;

2.2.2:   顺着变量$p所指向的内存地址找到对象;

2.2.3:   执行getSex(),发现调用的是类的对象所指向的方法,顺着对象与类的关系进入到内的内部;

2.2.4:   进入类的内部的第一件事,就是把$this指向对象的地址;

2.2.5:   执行getSex(),在栈区开辟一段空间保存函数;

2.2.6:   执行echo $this->sex,直接读取值;

2.2.7:   函数执行结束,会被操作系统回收;

3:   脚本执行结束,释放栈和代码区的内容;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值