c++ Vs PHP -面向对象问题:


C++ Vs PHP - Object oriented questions:

我最近一直在使用PHP,虽然我发现这种语言非常简单,来自c++/c#/python等,但当涉及到它的OO表示时,我已经遇到了一些奇怪的差异(可能)。如果有人能回答几个简短的问题,我将非常感激:)

  1. 构造函数可以在PHP中返回结果值吗?

  2. 当类中的成员函数调用类中的另一个成员函数时一个类,我必须使用self::作用域还是这只是一个提示?

  3. 为什么有self::和$this->,区别是什么?

  4. 是否需要删除用new或will创建的对象超出范围,移除它?我不确定它是否真的是动态的,或者如果有像c#那样的垃圾收集

我知道这些问题有点简单,我一直看到使用所有这些东西的代码-但我还没有看到任何具体的东西,我家里没有一本好的php书:)所以提前感谢你的答案!

1。构造函数可以在PHP中返回结果值吗?

。(这是可能的,但问题已经修复-以防您看到暗示其他内容的代码。)

2。当类中的成员函数调用类中的另一个成员函数时,我是否必须使用self::作用域,或者这只是一个提示?

这在技术上通常有效,请不要这样做。在对象实例中使用$this来访问自己的属性和方法。

3。为什么会有self::和$this->,它们有什么区别?

这不是完整的答案,但作为介绍:self::用于静态函数调用和成员访问。参见PHP: self vs. $this

4。是否需要删除用new创建的对象,或者超出作用域会删除它?我不确定它是否真的是动态的,或者是否像c#一样有垃圾收集。

你不需要删除对象,有一个垃圾收集器。当对象离开作用域时,它们将被删除(zval的容器引用计数为1)。请记住,在PHP中,所有内容都会在请求结束时被删除。您的应用程序通常只运行几分之一秒,然后随着脚本(和PHP)的终止,进程的内存将被清除。

    不,它会自动返回一个$this的实例(除非抛出异常)
  1. 访问静态成员
  2. 时需要使用self::
  3. self::用于访问静态成员,$this->用于访问实例成员
  4. 不,当所有对对象的引用都消失时,对象将被垃圾收集