在 PHP 中,"final static" 和 "const" 有什么区别?



我意识到这个问题已经在其他地方针对不同的编程语言被问过了......但这不是 PHP 域中相同答案的 100% 指标,所以我问这个问题。

有人可以告诉我,特别是在PHP中,"最终静态"和"const"之间的区别是什么?

final

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

只有类中的类定义和/或方法可以定义为 final .

static

将类方法属性声明为静态值,以便无需实例化对象即可访问它们。这些在父类和子类之间共享。

类定义不能staticfinal不同。

const

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

常量是按类的实例分配的。


const本身就是一个类型说明符。它不能与public/private/static等一起放置。 final,如前所述,可以与任何方法或类定义一起使用,因此;适用于所有人。 static不能应用于类定义,但可用于类属性。

更新

自 PHP 7.1.0 起,类常量允许使用修饰符。

class Foo {
    public const bar = 5;
    private const baz = 6;
}

总而言之,final static不能用于定义以下内容

class X {
    final static x = 5;
}

这就是为什么你有const.

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

他们没有任何

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

最新更新