【PHP】オブジェクト定数constのすすめ

 constはPHPのオブジェクト定数です。具体的には決して変更の効かない値を設定する修飾子です。オブジェクトと密に絡んだ設定値などを記述するのが主な目的です。
PHP: オブジェクト定数 – Manual

class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
        // self::CONSTANT = 'hogehoge'; の様な代入は文法エラーで弾かれる
    }
}

 変更が効かない、というのはあくまで代入ができないのみで、継承による変更は可能です。

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
        // self::CONSTANT = 'hogehoge'; の様な代入は文法エラーで弾かれる
    }
}

class WhoClass extends MyClass
{
    const CONSTANT = 'extended constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
        // self::CONSTANT = 'hogehoge'; の様な代入は文法エラーで弾かれる
    }
}
echo  MyClass::CONSTANT . "\n"; // constant value
echo  WhoClass::CONSTANT . "\n";// extended constant value

 不便な部分は設定ファイルを読み込んでその値を入れておく、という処理をしたい時ぐらいです。constにならば言語仕様的に値が変更されないと担保されるのでコーディング時、テスト時に混乱を招きにくいです。
 よくstatic修飾子によって静的呼び出しをするコードがありますが、static修飾子のプロパティは値をコードの実行中に書き換えられます。フレームワーク、ライブラリ、プロジェクトによっては静的に呼び出せる動的なふるまいの権化のコードが存在するため、staticでもわりと警戒する必要があります。constは後に開発をする人に無用な警戒心を抱かせず、読みやすいコードの作成に貢献してくれます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG