【问题标题】:C++ Vs PHP - Object oriented questions:C++ Vs PHP - 面向对象的问题:
【发布时间】:2011-11-29 12:55:03
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: php oop


【解决方案1】:

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

没有。 (这是可能的,但问题已得到解决 - 以防您看到提示其他内容的代码。)

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

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

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

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

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

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

【讨论】:

  • +1 告诉我 self:: 有效但不可取:) 这就是我问这个问题的主要原因。
【解决方案2】:
  1. 不,它会自动返回$this的实例(除非抛出异常)
  2. 访问静态成员时需要使用self::
  3. self:: 用于访问静态成员,$this-> 用于实例成员
  4. 不,当所有对它的引用都消失时,该对象将被垃圾回收

【讨论】:

  • 简洁明了,我喜欢! :)
猜你喜欢
  • 2011-07-25
  • 2011-06-18
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
相关资源
最近更新 更多