PHP開発における定数の管理方法

基本的には、Enumを使った方法と、DBのマスタテーブルを用意する方法の2パターンがあるかと思います。PHP8.1のEnumを使用するか、それ以前のverの場合は自作Enumが必要になるかと思います

Enum型クラスのメリットと、PHPでEnum型のクラスを自作する際の一例
本記事では、Enum型クラスのメリットと、PHPでEnum型のクラスを自作する際の一例について紹介しています。通常の定数で扱うよりも、予期しない値の代入を防止できたり、数値に名前が付くことでの可読性の向上が見込めたりと、メリットが結構ありますので、ぜひ参考にしてみてください。

config/const.phpにひたすら定数を列挙するという方法もありますが、ファイル自体の行数が肥大化しがちなのと、オブジェクト指向の観点からみるとやはり定数クラスを用いるほうが適切かと思われますので、本記事では割愛しています。

Enumを使用する場合

メリット

  • 保守性が高い
    プログラム内に記載し、意味のあるクラス名をつければ、可読性、保守性が高く、保守がしやすいコードになります。
  • IDEの補完も効くのでコーディングがはかどる
  • DBを見なくても、区分名称が把握・取得できる

デメリット

  • 区分値の追加、名称の変更が容易でない
    仕様変更などで、区分値の追加や、名称の変更がある際、プログラム修正が発生し、リリース作業も発生します。

ユースケース

  • 基本的には、性別や受注ステータスなど、頻繁に変更されないデータはEnumで管理すると良い

DBのマスタテーブルを使用する場合

IDとその区分名称を管理する。一般的には、”mst_”という接頭辞をつけるというようなルールを設けてマスタテーブルを用意する

メリット

  • 名称の変更がしやすい
    区分値の名称を変更するのは、DBのレコードを更新するだけで良いので、プログラム修正が発生しない

デメリット

  • ダブルメンテ
    DBの区分値によって分岐処理を記述する際、
    その区分値をアプリ側に持つ必要があるため、DBに値を持っていても、ダブルメンテナンス状態に陥る
  • テーブルの数が増えると管理しにくい

ユースケース

  • 比較的変更される頻度の高い項目はこちらで管理するほうが良いかと思います
タイトルとURLをコピーしました