Laravel

Laravel アクセサの使い方を解説

タクマ

こんにちは!タクマです。

31歳未経験からエンジニア転職に成功し、

2021年3月より都内の受託開発企業にてサーバーサイドエンジニアとして働いており、

PHP/Laravel、Vue.jsを使用し開発をしています。

本日はLaravelのアクセサの使い方について解説します。

アクセサってなに?

アクセサ聞いたことあるけど使い方がわからない

という方はこの記事を読めばアクセサを理解し、使いこなせるようになりますので、是非最後まで読んでください!

アクセサとは?

アクセサとは、アクセス時にモデルのプロパティの値を変換する処理のことです。

実際に使い方を見てみましょう!

アクセサの書き方

例としてItemモデルのpriceプロパティ10000を表示用に¥10,000-に変換するdisplay_priceというアクセサを書く場合下記のようになります。

<?php

namespace App\Models;

class Item extends Model
{
    use HasFactory;

    /**
    * 金額を表示用に整形して返却する
    * 例:10000 → ¥10,000-
    *
    * @return string
    */
    public function getDisplayPriceAttribute(): string
    {
        return '¥' . number_format($this->price) . '-';
    }
}

このようにget〜Attributeといった名前のモデルメソッドがアクセサになります。

これでdisplay_priceというアクセサの定義ができました。

アクセサの呼び出し方

定義したアクセサはgetAttributeを除いたアクセサ名をスネークケースで記述することで呼び出すことができます。

$item->display_price ;    // ¥10,000-が呼び出される

このようにプロパティと同じ感覚でスネークケースで呼び出すことができるのはアクセサのメリットの一つです!

余談

余談ですが、先ほど

定義したアクセサはgetとAttributeを除いたアクセサ名をスネークケースで記述することで呼び出すことができます。

と書きましたが、実は

$item->displayPrice;
 $item->DisplayPrice;
 $item->displayprice;

と上記のように記述しても呼び出すことができます。

ですが、アクセサはスネークケースで呼び出すことが一般的ですので、スネークケースで呼び出しましょう!

また、アクセサではなく、モデルメソッドとして下記のように書いても同じ結果が得られます。

<?php

namespace App\Models;

class Item extends Model
{
    use HasFactory;

    /**
    * 金額を表示用に整形して返却する
    * 例:10000 → ¥10,000-
    *
    * @return string
    */
    public function getDisplayPrice(): string
    {
        return '¥' . number_format($this->price) . '-';
    }
}
$item->getDisplayPrice();   //  ¥10,000-

ですが、呼び出す際にスネークケースでプロパティと同じ感覚で呼び出せるアクセサの方が個人的には好きです。

さいごに

いかがでしたでしょうか?

アクセサの使い方ついて理解できましたでしょうか?

ご質問やご指摘等ある方はコメントしていただければ返信させていただきます。

これからもLaravelエンジニアの方、Laravel学習中の初学者の方に役に立つ記事を更新していきますのでよろしくお願いします!

Twitterでも情報発信をしていますので、よかったらフォローをお願いします(^^)

Webエンジニア
タクマ
埼玉県出身の33歳

新卒で入社した専門商社で8年間営業職として勤務

30歳からプログラミングを始め31歳でWebエンジニアに転職成功

受託開発企業での開発を1年弱経験したのち、現在はスタートアップの自社開発企業で開発に従事している
\ Follow me /

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA