[Laravel] Facade 만들기 및 사용 updated_at: 2024-12-15 04:06

Laravel에서 Facade 만들기 및 사용

Facade 란

Laravel에서 Facade는 애플리케이션의 서비스 컨테이너에 등록된 서비스에 대한 정적과 유사한 인터페이스를 제공하는 클래스입니다. Facade는 서비스 컨테이너의 기본 클래스에 대한 "정적 프록시" 역할을 하며, 기존의 정적 메서드보다 더 많은 테스트 가능성과 유연성을 유지하면서 표현적인 구문을 제공합니다.

Facade 사용의 장점

  • 단순성: Facade는 복잡한 논리에 액세스하는 간단한 방법을 제공합니다.
  • 테스트 가능성: 정적 인터페이스에도 불구하고 Facade는 정적 메서드보다 테스트 가능성이 더 높습니다.
  • 가독성: 코드를 더 읽기 쉽고 이해하기 쉽게 만듭니다.

1단계: 서비스 컨테이너 이해

파사드를 만들기 전에 파사드를 제공하고자 하는 서비스(클래스)가 있어야 합니다. Laravel 서비스 컨테이너는 클래스 종속성을 관리하고 종속성 주입을 수행하는 강력한 도구입니다

2단계: 서비스 클래스 만들기

먼저 서비스 클래스를 만듭니다. 이 클래스에는 파사드를 통해 노출하고자 하는 로직이 포함되어 있습니다.

namespace App\Services;

class VerificationService
{
  public function verify()
  {
    return true;
  }
}

3단계: 서비스 공급자 등록

서비스 공급자는 서비스를 서비스 컨테이너에 바인딩하는 곳입니다. 아직 서비스 공급자가 없으면 만듭니다.

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Services\VerificationService;

class VerificationServiceProvider extends ServiceProvider
{
  public function register()
  {
    $this->app->singleton(VerificationService::class, function ($app) {
      return new VerificationService();
    });
  }
}

config/app.php 파일에 공급자를 등록하는 것을 잊지 마세요.

4단계: Facade 만들기

Illuminate\Support\Facades\Facade를 확장하는 새로운 Facade 클래스를 만듭니다.

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class VerificationFacade extends Facade
{
  protected static function getFacadeAccessor()
  {
    return 'App\Services\VerificationService';
  }
}

5단계: Facade 별칭 지정

더 쉽게 액세스할 수 있도록 Facade 별칭을 지정할 수 있습니다. config/app.php의 별칭 배열에 추가합니다.

'Verification' => App\Facades\VerificationFacade::class,

6단계: Facade 사용

이제 다른 Laravel Facade와 마찬가지로 애플리케이션에서 Facade를 사용할 수 있습니다.

use Verification;

public function demo()
{
  return Verification::verify();
}

Facade로 테스트하기

테스트할 때 Facade 뒤에 있는 기본 클래스 인스턴스를 모의로 쉽게 바꿀 수 있으므로 기본 클래스의 동작을 실제로 트리거하지 않고도 애플리케이션을 테스트할 수 있습니다.

결론

Laravel의 Facade는 애플리케이션에서 서비스를 사용하는 우아한 방법을 제공하여 더 깔끔하고 읽기 쉬운 코드를 제공합니다. 이러한 단계를 따르면 Laravel의 강력한 기능을 최대한 활용하여 사용자 정의 Facade를 만들고 사용할 수 있습니다.

Facade가 도움이 되지만 신중하게 사용해야 한다는 점을 기억하세요. 과도하게 사용하면 서비스 컨테이너의 흐름을 이해하는 데 문제가 발생할 수 있으며 신중하게 수행하지 않으면 테스트가 복잡해질 수 있습니다.

평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글