この質問は、さまざまなプログラミング言語についてすでに他の場所で尋ねられていることを認識しています...しかし、これはPHPドメインで同じ答えを100%示すものではないため、この質問をしています。
特にPHPで、「final static」と「const」の違いは何ですか?
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
。