Laravel
LaravelでのFacade(ファサード)とは?Facadeの実装方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
オススメ本
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 にご連絡ください。
それでは!
人気記事