在PHP中,对象与整数和浮点类型相同。它们也是一种数据。它们用于存储不同类型的数据。
在运行时,必须将其加载到内存中以供使用,那么对象如何反映在内存中?
从逻辑上讲,内存大致分为4个段:
堆栈空间段,堆空间段,代码段,初始化静态段
程序中的不同声明放置在不同的内存段中
数据段:
它是指已在程序中初始化但不为0的全局变量,例如静态变量和常量;
代码段(代码段/文本段):
指用于存储程序执行代码(例如函数和方法)的存储区;
堆栈空间段:
这里是存储占据相同空间长度和较小空间的数据类型的地方,例如整数1、10、100、1000、10000、100000等,
存储器中占用的空间长度相等,全部为64位和4个字节。然后数据长度是可变的
占用大量空间的数据类型的数据在哪个内存段中?这些数据存储在堆内存中。
如下所示:

可以直接访问堆栈内存,而堆内存是不能直接访问的内存。
对于我们的对象,它是一个大型数据类型,并且占用的空间长度是可变的,因此该对象被放置在堆中,
但是将对象名称放置在堆栈中,以便该对象名称可以使用该对象。
$ p1是我们实例化的对象的名称。同样,$ p2和$ p3也是我们实例化的对象的名称。
一个类可以实例化多个对象,并且每个对象都是独立的。上面的代码等效于一个3个人的实例。
每个人之间没有联系,只能表示他们都是人类,每个人都有自己的姓名,性别和年龄属性,
每个人都有说话和走路的方式,只要成员属性和成员方法反映在类中,
这些属性和方法包含在实例化的对象中。
$p1=new Person();
对于这段代码,$ p1是堆栈存储器中对象的名称。 New Person()是堆内存中的实际对象。有关详细信息,请参见下图:

从上图中,我们可以看到$ p1 = new Person();。等号的右侧是实对象实例,即堆内存中的实体,
上图中有3次new Person(),因此将在堆中打开3个空间,并生成3个实例对象。
每个对象在PHP中使用其自己的空间彼此独立
只要出现一个新关键字,就会实例化一个对象,并在堆中打开一个自己的空间。
堆中的每个实例对象都存储属性。例如,名称,性别和年龄存储在堆中的实例对象中。
每个属性都有一个地址。 $ p1 = new Person();等号右侧的$ p1是参考变量,
通过赋值运算符“ =”,将对象的第一个地址分配给引用变量“ $ p1”
因此,$ p1是存储对象的第一个地址的变量,$ p1被放置在堆栈存储器中,$ p1等效于指向堆中对象的指针,
因此,我们可以通过引用变量$ p1操作对象,通常我们也将对象引用称为对象。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-363957-1.html
24小时不间断巡航南海岛礁
是个男人就不会像这样的想法
那些钱被谁拿走了呢