【问题标题】:PHP: After setting the constructor, why I can´t use the property´s own name? [closed]PHP:设置构造函数后,为什么我不能使用属性自己的名字? [关闭]
【发布时间】:2014-06-30 19:40:35
【问题描述】:

我正在学习 PHP 对象和构造函数。

我有一个简单的例子:

class ShopProduct {
private $title;

public function __construct($title) {
$this->title = $title;
}

public function getTitle() {
return $this->title;
}
}

我不明白的是为什么我要在构造函数中执行此分配,只是为了在下一个函数中继续使用$this->title

我的意思是,在创建了构造函数之后,我为什么要这样做:

public function getTitle() {
return $this->title;
}

而不是这个?

public function getTitle() {
return $title;
}

感谢您的澄清。对不起,我的英语很糟糕,也许不准确:)

【问题讨论】:

  • 这个问题似乎跑题了,因为它不是代码问题。
  • 语言就是这样设计的。没有办法绕过它。至于为什么,也许 PHP 开发人员和 PHP 用户更容易区分类属性和本地范围变量?
  • 由于设置veriables,在加载类之前。
  • 我认为人们可以对代码提出任何疑问,而不仅仅是具体问题。 (这里还有很多其他“理论上的”问题)没有任何接近投票。

标签: php oop constructor


【解决方案1】:

类属性可以为每个类实例(对象)具有不同的值,也可以具有相同的值,这样每个实例都可以跟踪它。在您的示例中,每个班级的 $title 都会有所不同,所以当您说

$this->title

你实际上是在说'给我这个这个方法被调用的特定实例的标题'。

【讨论】:

    【解决方案2】:

    因为这就是语言的工作原理。

    如果成员函数在其所有变量访问中始终具有隐式 $this->,您将如何在父作用域中引用名为 $title 的变量?

    如何在同一个函数中有一个名为 $title 的局部变量一个名为 $this->title 的成员变量?

    突然就不行了……

    function setTitle($title) {
       $this->title = $title;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 2013-09-25
      • 2017-09-20
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多