在PHP中,“";“最终静态”;及;常数;?

在PHP中,“";“最终静态”;及;常数;?,php,variables,static,constants,Php,Variables,Static,Constants,我意识到这个问题已经被其他不同的编程语言问到了。。。但是在PHP域中,这不是一个100%的指标,所以我要问这个问题 有人能告诉我,特别是在PHP中,“最终静态”和“常量”之间有什么区别吗?它们没有任何共同点,它们创建了完全不同的东西const声明一个常量final static声明一个静态(可以在没有类实例的情况下调用)和final(不能被子类重写)的方法static可以单独用于定义类范围的变量,该变量不是常量(但变量不能是final)。final不用于类属性,仅用于类和方法。这意味着该方法不能

我意识到这个问题已经被其他不同的编程语言问到了。。。但是在PHP域中,这不是一个100%的指标,所以我要问这个问题


有人能告诉我,特别是在PHP中,“最终静态”和“常量”之间有什么区别吗?

它们没有任何共同点,它们创建了完全不同的东西
const
声明一个常量
final static
声明一个静态(可以在没有类实例的情况下调用)和final(不能被子类重写)的方法
static
可以单独用于定义类范围的变量,该变量不是常量(但变量不能是
final
)。

final
不用于类属性,仅用于类和方法。这意味着该方法不能被重写,或者该类不能从中继承
const
是PHP等价于Java
final
变量。

final
方法不能由子类修改。这可以防止类继承、方法重写和/或方法的重新定义

只有类内的类定义和/或方法才能定义为
最终版

static
将类方法属性声明为静态值,以便在不实例化对象的情况下访问它们。它们在父类和子类之间共享

类定义不能是
静态的
,而不像
最终的

const
它们为类创建一个常量值。常量值将被更改,并且不能由父类或子类中的方法更改

类常量是为类的每个实例分配的


const
本身就是一个类型说明符。它不能与
public
/
private
/
static
等一起使用。
前面提到的final
可以与任何方法或类定义一起使用,因此;适用于所有这些<代码>静态不能应用于类定义,但可以用于类属性

更新

自PHP 7.1.0以来,类常量允许使用


总而言之,
最终静态
不能用于定义类似以下内容:

class X {
    final static x = 5;
}
这就是为什么您有一个
常量

class X {
    final static x = 5;
}