採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

クラス定数 (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 $nameconst NAME
値の変更できるできない
命名$camelCaseUPPER_CASE
用途共有される状態不変の設定値

「変えていい値 = static、変えてはいけない値 = const」と覚える。

このチャプターでできるようになること

const でクラス定数を定義できる

ClassName::NAME / self::NAME で参照できる

✅ 書き換えるとエラーになることを知っている

✅ static との使い分けを言える

関連: 同トピック内の他チャプター (このチャプターは採点ドリル無し)