クラス定数とは?
状態:-
閲覧数:6,535
投稿日:2010-05-11
更新日:2018-07-14
クラス内で定義する定数
クラスメンバとして、クラス内で定義する定数
・通常「定数」同様、格納出来るのは「スカラー値」のみ
・“定数”なので再定義不可
・プロパティの様に値を省略することはできない
メリット
・定数をパッケージング化することで、定数を階層的に分類することができる
・違う分類で同じ定数名を使うことができる
定義方法
通常定数
・ 「define(定数名, 値)」 - define関数を利用
クラス定数
・クラスにて、「const 定数名 = 値」
・クラス定数は必ずpublicだからアクセス修飾子は付けない
・また、通常定数同様、定数名に「$」は付けない
修飾子指定不可 / スコープ / 所属 / 参照方法 / 継承
修飾子指定不可
「クラス定数」の定義時に「アクセス制限修飾子」や「static修飾子」を指定することはできない
・「クラス定数」は常に「スタティック」で「パブリック」のため
※「定数」の一種
スコープ
「通常の定数」同様、グローバル=無制限(関数の中でもクラスの中でも、どこからでも参照可能)
所属
通常定数
・グローバルに存在する
クラス定数
・クラスに属している
参照方法
クラス外から
・クラス定数はクラスのインスタンスを生成せずに、クラスメンバ(静的メンバ)同様直接参照できる
・クラスプロパティとの違いは値の変更が出来るか出来ないかだけ
クラス名::定数名
クラス内から
self::定数名
継承
クラスを継承した場合
・親クラスと同名の「クラス定数」を定義することができる