Laravel

LaravelでのFacade(ファサード)とは?Facadeの実装方法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel の Facade とは?について解説しつつ、実装方法についても書いています。全く分からない人向けの内容になっています。

Facade とは?

Facade は、クラスを簡単に呼び出せる機能です。

例えば、

use App\Models\Post; //どうしてモデルはパスを全て書かないといけないのに
use Auth; //Authはこれだけで良いんだろう?

と思ったことはありませんか?

この省略して書けるのが、Facade の機能になります。

Facade の実装方法

サービスクラスを Facade として利用するケースをやっていきます。

今回使うサービスクラスは、別記事のこちらを流用しています。

もし、サービスクラスが分からない人はこちらをご参照ください。

Laravel で Service(サービス)クラスを使う方法

サービスコンテナに登録する

app/Providers/AppServiceProvider.php

use App\Services\Test;

// 途中省略

public function register() {
    app()->bind('Test', Test::class);
}

ファサードクラスを作成する

App\Facades\TestFacade.php を作成し、記述する。Facades ディレクトリも作成してください。

<?php

namespace App\Facades;
use Illuminate\Support\Facades\Facade;

class TestFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'Test';
    }
}

ファサードを呼び出す時

コントローラーなどで、

use App\Facades\TestFacade; // useする

//~~~中略
public function index()
{
  $user = TestFacade::getTestUser();
  dd($user);
}

とすると呼び出せます。

最後にエイリアスの登録をする

エイリアスを登録することで、「use」の記述を省略することができるようになります。

この設定は、/config/app.php でできます。

'aliases' => [
  //~~~いっぱい記述がある最後に追記する
  'Test' => App\Facades\TestFacade::class,
]

config に追記したので、変更を読み込ませます

php artisan config:clear
または、
php artisan config:cache

エイリアスに登録した Facade を呼ぶ方法

  $user = \Test::getTestUser();
  dd($user);

このように

\

から初めて記述すれば、use することなく呼び出せます。便利ですね〜!

まとめ

以上です。

Laravel の Facade と言う機能について実装する方法を記事にしました。

誰かの参考になればと思います。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する