1
0

More than 1 year has passed since last update.

【Laravel】定数を扱うなら専用のクラスを使おう

Last updated at Posted at 2023-08-02

はじめに

laravelで定数を扱う方法は多々ありますが、この記事ではクラスを使用した方法を解説します。

マジックナンバーについて

まず、開発をする上で注意すべきことにマジックナンバーというものがあります。

マジックナンバーというのは、それが何を示しているかがわからない文字列や数値のことです。

プログラムにおけるマジックナンバー(英: magic number、魔法の数字)とは、何らかの識別子もしくは定数として用いられる、プログラムのソースコード中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。

コードで解説をすると、

<?php

class Order
{
    public function method($orderStatus)
    {
        if ($orderStatus === 1) {
            // 処理
        }
        if ($orderStatus === 2) {
            // 処理
        }
    }
}

上記のコードを見ると12は何を示しているのかがわからないと思います。

この値の意味を理解するにはコードを書いた本人に聞くしかありません。

マジックナンバーのデメリット

  • チームメンバーや自分が値の意味を理解するのに時間がかかる
  • 値を変更したい場合に複数箇所の修正が必要になることがある

専用のConstクラスファイルを作成する

マジックナンバーを解決するためには色々な方法がありますが、おすすめな方法として専用のConstクラスファイルを作成するという方法です。

まずは、appディレクトリにConstsディレクトリを作成し、その中にOrderStatusConsts.php(わかりやすく命名)を作成します。

app/Consts/OrderStatusConst.php
<?php

namespace App\Consts;

class OrderStatusConsts
{
    public const STATUS_CANCEL = 1;
    public const STATUS_SENT = 2;
}

次にモデルやコントローラーで呼び出すときの記述を簡潔にするために、config/app.phpにエイリアスを定義しておきます。

config/app.php
<?php

return [
    'aliases' => [
        'OrderStatusConsts' => App\Consts\OrderStatusConsts::class,
    ],
];

実際に呼び出します。

<?php

class Order
{
    public function method($orderStatus)
    {
        if ($orderStatus === \OrderStatusConsts::STATUS_CANCEL) {
            // 処理
        }
        if ($orderStatus === \OrderStatusConsts::STATUS_SENT) {
            // 処理
        }
    }
}

このように定義することで、マジックナンバーを解決することができ可読性や保守性が上がります。

最後に

定数を扱う方法は他にも、configファイルを作成する方法やModelクラスファイルに定数を記述する方法などがありますが、個人やチームでやり方は違うと思うのでこの記事は参考程度に、、、、

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0