C ++与PHP - 面向对象的问题:

时间:2011-10-02 19:54:26

标签: php oop

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

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

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

  3. 为什么有自我::和$ this->有什么区别?

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

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

2 个答案:

答案 0 :(得分:7)

  

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

没有。 (这是可能的,但问题已得到修复 - 如果您看到代码提示其他内容。)

  

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

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

  

3。为什么有自己::和$ this->有什么区别?

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

  

4。是否需要删除使用new创建的对象,或者将超出范围删除它?我不确定它是真正的动态,还是像C#中那样的垃圾收集。

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

答案 1 :(得分:5)

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