版权声明:俗世凡人行(释) QQ:748507607 https://blog.csdn.net/weixin_41887155/article/details/86237349
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: 脚本执行结束,释放栈和代码区的内容;