概要
クラス定数は 「クラスに紐付いた変更できない値」 で、class Config { const VERSION = "1.0"; } のように const キーワードで宣言する。インスタンスを作らずに Config::VERSION の形で参照でき、static プロパティと違って 代入で書き換えることが一切できない。バージョン番号・上限値・状態名 (STATUS_ACTIVE 等) のような「コードを書いた時点で確定していて、実行中に変わらない値」を集約しておく場所として使う。
書き方は const NAME = 値; で、クラスの { } の中に置く。値には数値・文字列・配列・他の定数式が書ける。外から参照するときは ClassName::NAME、クラス内からは self::NAME の形で、static プロパティと違って $ は付かない。マジックナンバー (if ($status === 2)) をコードに散らばらせず、if ($status === Order::STATUS_PAID) と書けるようになるのが、読み手に対するいちばん大きな効果になる。
補足として PHP 8.1 以降には enum (列挙型) が導入されていて、「決まった選択肢のうちのどれか」を表現するならクラス定数より enum のほうが型として強く守れる。enum Status { case Active; case Paid; } のように書ける。古いコードベースではクラス定数で十分なケースも多いが、新規設計では「集約された定数群は enum 化を検討する」流れになっていることだけ意識しておく。
学習目標
const NAME = 値;でクラスに「変えられない値」を持たせられるClassName::NAME(外) /self::NAME(中) で参照するstaticプロパティとの違い (変更可否) を理解する
ドリル
このチャプターはスライドのみ。次の章へ。
採点ドリルは無し。スライドで概念を理解したら ch08 (final) に進む。