为什么类声明的常量需要静态恢复?

MEM*_*MEM 1 php static constants

class foo 
{
    const bar;
}
Run Code Online (Sandbox Code Playgroud)

要访问它我们必须这样做:self::bar;而不是,$this->bar;

它是否正确?如果是这样,为什么?

Rao*_*uke 6

是的,这是正确的.原因是一个常量是类绑定的,而一个属性是实例绑定的,因此通过引用访问它是没有多大意义的.无论你创建多少个实例,总会只有一个foo :: bar const.

这只是一个语言设计决定,通过引用访问const是不可能的,例如,在Java中,您确实可以通过引用访问静态final属性,但通常会收到编译器警告.