クラス定数 (const)
テクノロジ系 / class-advanced (継承 / オーバーライド / abstract / interface / static / const / final)
クラス定数 (const)
Lesson 9 / Chapter 7
「変えてはいけない値」をクラスに持たせたい
<?php
class Tax {
public static float $rate = 0.10;
}
Tax::$rate = 0.20; // ❌ うっかり書き換わってしまうstaticプロパティは便利だが、誰でも書き換えられる- 税率や円周率など「変わってはいけない値」には不向き
const で書き換え不能な値を定義
<?php
class Tax {
const RATE = 0.10;
}const 名前 = 値;の形式- 定数名は 大文字 が慣例 (
RATE,MAX_AGEなど) $は付けない (変数ではないので)
参照方法
<?php echo Tax::RATE . "\n"; // 0.1 // Tax::RATE = 0.20; // ❌ Fatal error: 定数は変更できない
- 外からは
ClassName::NAMEで参照 - クラス内からは
self::NAMEで参照 - 書き換えようとすると即エラー
クラス内での使用例
<?php
class Tax {
const RATE = 0.10;
public static function withTax(int $price): float {
return $price * (1 + self::RATE);
}
}
echo Tax::withTax(1000) . "\n"; // 1100- メソッド内では
self::RATEで呼ぶ - 値が 1 箇所で管理され、改修も楽
static プロパティとの違い
static $name | const NAME | |
|---|---|---|
| 値の変更 | できる | できない |
| 命名 | $camelCase | UPPER_CASE |
| 用途 | 共有される状態 | 不変の設定値 |
「変えていい値 = static、変えてはいけない値 = const」と覚える。
このチャプターでできるようになること
✅ const でクラス定数を定義できる
✅ ClassName::NAME / self::NAME で参照できる
✅ 書き換えるとエラーになることを知っている
✅ static との使い分けを言える
関連: 同トピック内の他チャプター (このチャプターは採点ドリル無し)