【PHP】クラス定数とは? – クラスレベルで固定のデータを設定する

クラスにはクラス定数と呼ばれるものがあります。

クラス定数はクラスレベルの固定データ(変更できないデータ)です。

ここでは初心者向けにクラス定数について解説します。

なお、クラスについてご存知でない方は先に次の記事をご覧ください。

★ 目的

  • クラス定数を理解する。
  • クラス定数を使えるようになる。

クラス定数とは

クラス定数はクラスレベルの固定データです。

プログラム内でデータを変更することはできず、実行時は一定の値を保ちます。

クラス定義の構文

クラス定義の基本構文は次のようになります。

class クラス名 {
    const クラス定数名;
}

クラス定数はクラス定義の中に記述します。

クラス定数の使い方

クラス定数を使用した次のサンプルコードをご覧ください。

ソースコード

<?php

// クラス定義
class Bill {
    
    // 税率
    const TAX = 0.1;
    
    // 料金
    public $price;
    
    // コンストラクタ
    public function __construct( $price ) {
        $this->price = $price;
    }
    
    // 合計金額を出力する
    public function total() {
        // 合計金額
        $total = $this->price + $this->price * self::TAX;
        // 合計金額を出力
        echo "----------\n";
        echo "小計  : ".$this->price."\n";
        echo "税率  : ".self::TAX."\n";
        echo "合計  : ".$total."\n";
    }
    
}

// 税率を出力
echo "税率は".Bill::TAX . "です。\n";

// インスタンス化(インスタンスの生成)
$item = new Bill(1500);

// 合計金額を出力
$item->total();

?>

実行結果

税率は0.1です。
----------
小計  : 1500
税率  : 0.1
合計  : 1650

Billクラスはお会計の合計金額を計算するクラスです。

7行目の『const TAX = 0.1』が定数の定義になります。定数は変数と異なり、先頭に$マークを付けません。

また、慣例的に大文字のみで命名されることが多くあります。

定数へのアクセスはクラス変数と似た構文で、次のようになります。

クラス::クラス定数

31行目でクラス定数にアクセスしており、実行結果から取得できていることが分かります。

また、totalメソッドで『self::TAX』の記述がありますが、こちらはクラス内でクラス定数を使用する場合の記述方法になります。

基本的にはクラス変数と同様の記述で使用でき、違いはクラス定数はデータを変更できないということです。

まとめ

クラス定数はクラスレベルの定数です。プログラム内でデータを変更する処理はできず、一定の値を保つことを保証するため、意図的に変更したくないデータは定数化すると良いでしょう。