在PHP中,“最终静态”和“const”有什么区别?

2022-08-30 23:05:11

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

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


答案 1

final

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

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

static

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

类定义不能与 不同。staticfinal

const

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

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


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

更新

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

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

总而言之,最终的静态不能用于定义如下内容

class X {
    final static x = 5;
}

这就是为什么你有一个.const


答案 2

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


推荐