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);그러면 이렇게 사용할 수 있게 된다.