laravel facade 사용하기
Updated on
Facade를 잘 사용하지 않지만, 혹시 패키지 만들게 된다면 Facade를 사용하게 될 것 같아서 사용방법을 기록한다.
IDE에서 자동완성이 되야하기 때문에…
EmojiFacade
<?php namespace App\Services\Emoji\Facades; use Illuminate\Support\Facades\Facade; /** * @see \App\Services\Emoji\EmojiService */ class EmojiFacade extends Facade { protected static function getFacadeAccessor(): string { return 'emoji'; } }
EmojiService
<?php namespace App\Services\Emoji; use App\Services\Emoji\Data\EmojiData; class EmojiService { public function getEmoji(int $id): EmojiData { return new EmojiData(id: $id); } }
EmojiServiceProvider
<?php namespace App\Providers; use App\Services\Emoji\EmojiService; use Illuminate\Support\ServiceProvider; class EmojiServiceProvider extends ServiceProvider { public function register(): void { $this->app->bind('emoji', static function () { return new EmojiService(); }); } public function boot() { } }
config/app.php
'providers' => [ /* * Application Service Providers... */ App\Providers\EmojiServiceProvider::class, ], 'aliases' => Facade::defaultAliases()->merge([ 'Emoji' => EmojiFacade::class, ])->toArray(),
이렇게 등록해주면된다. 그런데 라라벨 11에서는 자동으로 프로바이더가 등록되는거로 알고 있어서,
App\Providers\EmojiServiceProvider::class
를 추가 안해도 될수도 있다.
Emoji::getEmoji(id: 111);
그러면 이렇게 사용할 수 있게 된다.