17

この質問は、さまざまなプログラミング言語についてすでに他の場所で尋ねられていることを認識しています...しかし、これはPHPドメインで同じ答えを100%示すものではないため、この質問をしています。

特にPHPで、「final static」と「const」の違いは何ですか?

4

3 に答える 3

34

final

メソッドまたはクラスは、子クラスによって変更できません。これにより、クラスの継承、メソッドのオーバーライド、および/またはメソッドの再定義が防止されます。

として定義できるのは、クラス内のクラス定義および/またはメソッドのみ finalです。

static

オブジェクトをインスタンス化せずにアクセスできるように、クラスメソッドまたはプロパティを静的な値として宣言します。これらは、親クラスと子クラスの間で共有されます。

staticクラス定義は、異なるものにすることはできませんfinal

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

于 2013-10-20T03:45:55.247 に答える