始めに
Laravelにて、ファサード(Facade)を使用することがあったので、
備忘録として記事にしました。
ファサードとは:staticメソッドみたいな感じ(どこでも使えるメソッドにする機能)
適当なController.php
// どこのController, ServiceでもTestFacadeクラスのtestメソッドが実行可能!
TestFacadeClass::test();
環境
開発環境 | バージョン |
---|---|
Laravel | 8.83.19 |
PHP | 7.3.10 |
流れ
1、ControllerかServiceにクラスを作成する
2、/app/Providers/AppServiceProvider.phpの設定
3、ファサード用ファイルを作成する
4、config/app.phpの設定
1、ControllerかServiceにクラスを作成する
今回はサービスにファサード化したいクラスを作成します。
TestService.php
class TestFacade
{
public function test()
{
Log::debug('testメソッドが処理されています。');
}
}
2、AppServiceProvider.phpの設定
/app/Providers/AppServiceProvider.phpの設定をします。
TestService.php
public function register() {
app()->bind('TestFacade', App\Services\TestService);
}
3、ファサード用ファイルを作成する
TestFacadeClass.php
use Illuminate\Support\Facades\Facade;
class TestFacadeClass extends Facade
{
protected static function getFacadeAccessor()
{
return 'TestFacade'; // AppServiceProvider.phpで設定した名称
}
}
4、config/app.phpの設定
/config/app.php
'aliases' => [
'TestFacadeClass' => \App\Facades\TestFacadeClass::class,
]
これで設定完了
使い方
適当なController.php
// どこのController, ServiceでもTestFacadeクラスのtestメソッドが実行可能!
TestFacadeClass::test();
最後に
以上で、Laravel のファサード設定方法でした。
ご指摘、ご意見ありましたら、コメント欄にお願いいたします。
ありがとうございました。
参考URL
【Laravel】ファサードとは?何が便利か?どういう仕組みか?
https://qiita.com/minato-naka/items/095f2a1beec1d09f423e