编程语言
首页 > 编程语言> > 当我在PHP中实例化一个类时,是否获得了指向该对象的指针?

当我在PHP中实例化一个类时,是否获得了指向该对象的指针?

作者:互联网

还是我的变量保存对象本身?

例如,当我说:

$obj = new ClassOne();

$obj是指向内存中创建的对象的指针吗?它仅保存对象的内存地址吗?还是它持有物体本身?

例如,当我说

$obj = new SomeOtherClass();

是像JAVA那样对ClassOne对象进行垃圾回收,还是像C那样导致内存泄漏?

解决方法:

简而言之,C和Java中的对象模型有些不同:

> C具有不受约束的变量:每种对象类型都可以作为可变量对象的类型出现.换句话说,变量可以是任何类型的对象. (但是并不是所有的变量都是对象(例如引用)!)而且,所有变量都是有作用域的,因此,所有对象(即变量)的生存期也是自动有作用域的.只有动态分配的对象永远不能是变量,并且只能通过指针和引用进行处理.
>在Java中,如果我们忽略基本类型,则变量永远不会是对象,而对象永远不会是变量.所有对象总是“神奇地位于其他地方”(例如“ GC堆”),并且您只能通过类似指针的句柄来处理它们.在Java中,类型T的变量始终是对驻留在其他地方的类型T的实际对象的引用.像C中一样,变量的作用域也是不确定的,但是所有Java对象的生存期是不确定的,并且只能保证超出对给定对象的所有引用的生存期.

(对于像int这样的内置“值”类型类型,情况则有所不同,它们可以作为变量的类型出现,并且实际上不能动态分配.)
>在这方面,我认为PHP与Java类似.

标签:instance-variables,php,object
来源: https://codeday.me/bug/20191031/1975255.html