为什么PHP在访问对象属性时不需要$?

时间:2017-05-31 01:18:11

标签: php class

在PHP中,在定义或访问变量时,使用美元符号$让解释器知道$之后的任何内容都与变量有关。

但是,在访问对象的属性时,只有对象本身以$开头,而不是属于该对象的属性。这是一个例子:

<?php

class Recipe 
{
    public $title;
    public $ingredients = array();
    public $instructions = array();
}

$recipe1 = new Recipe();

$recipe1 -> title = "FooBar Salad"; // This line is what I'm referencing.

?>

在上面的示例中,我们创建了一个名为Recipe的类,其属性为$title$ingredients$instructions,并创建了一个名为{{的类的新实例1}}。然后我们将值“FooBar Salad”分配给属性$recipe1 ...但是我们在属性名称之前不需要美元符号,只需要对象的名称。

这里发生了什么事;为什么解释器不需要像任何其他变量那样在属性名称前面加上美元符号?

1 个答案:

答案 0 :(得分:4)

我们不使用$,因为没有风险可以使用相同名称的常量,因为类常量被静态调用(Class :: const),这就是为什么当我们调用静态时属性我们使用$(Class :: $ property)