PHP:在设置了构造函数之后,为什么我不能使用属性的名称?


PHP: After setting the constructor, why I can´t use the property´s own name?

我正在学习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;
}

谢谢你的澄清。对不起,我的英语很糟糕,可能不准确:)

类属性可以在每个类实例(对象)中具有不同的值,也可以具有相同的值,以便每个实例都可以跟踪它。在您的示例中,每个类的$title将是不同的,因此当您输入

$this->title

你实际上是在说"为我获取这个特定实例的标题,该方法正在被调用"。

因为这就是语言的工作方式。

如果成员函数的所有变量访问都有一个隐式的$this->,那么如何在父作用域中引用一个名为$title的变量?

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

突然这就不工作了…

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