[라라벨] Facade 작성의 흐름

6610 단어 라라벨Laravel6

이번 주제



Facade의 작성 방법을 복습이 나면 메모로서 써 남깁니다.

버전



Laravel6.8

거친 흐름


  • 클래스 만들기
  • 서비스 제공자를 통해 클래스를 서비스 컨테이너에 등록
  • Facade 만들기 및 호출

  • 수업 만들기



    클래스를 배치하는 디렉토리 만들기
    $ mkdir app/Services
    
    app/Services/ 이하에 GreetingService.php 를 작성해, 클래스와 적당한 메소드를 정의.
    <?php
    namespace App\Services;
    
    class GreetingService {
    
      public function hello() 
      {
        return 'hello';
      }
    
    }
    
    

    서비스 제공자를 통해 클래스를 서비스 컨테이너에 등록



    자체 서비스 공급자 만들기
    $ php artisan make:provider GreetingServiceProvider
    

    위의 명령으로 app/Providers/ 아래에 작성된 GreetingServiceProvider.php 를 다음과 같이 편집.
    <?php
    
    namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    
    class GreetingServiceProvider extends ServiceProvider
    {
        /**
         * Register services.
         *
         * @return void
         */
        public function register()
        {
          $this->app->bind('greeting', 'App\Services\GreetingService'); // 追記
        }
    
        /**
         * Bootstrap services.
         *
         * @return void
         */
        public function boot()
        {
            //
        }
    }
    
    

    서비스 제공업체 등록


    config\app.php 를 열고 다음과 같이 추가합니다.
        'providers' => [
    
            // 略
    
            /*
             * 自作のサービスプロバイダー
             */
            App\Providers\GreetingServiceProvider::class, // 追記
        ],
    

    서비스 컨테이너에 등록되었는지 확인



    서비스 컨테이너의 실체는 Illuminate\Foundation\ApplicationクラスIlluminate\Foundation\Application 클래스는, 헬퍼 함수 app() 로 호출할 수 있으므로 이하와 같이 해 내용을 확인.
    dd(app());
    

    여러가지 나온 가운데 bindings를 열고,


    게다가 여러가지 나온 가운데, 방금 등록한 greeting 가 있으면 OK.


    Facade 만들기



    Facade를 배치하는 디렉토리를 작성.
    $ mkdir app/Facades
    
    app\Facades 아래에 Greeting.php 를 작성해 이하와 같이 편집.
    <?php
    namespace App\Facades;
    
    use Illuminate\Support\Facades\Facade;
    
    class Greeting extends Facade
    {
    
      protected static function getFacadeAccessor()
      {
        return 'greeting'; // サービスコンテナに登録した名前。
      }
    
    }
    

    Facade의 별칭 등록


    config\app.php 를 열고 다음과 같이 추가합니다.
        'aliases' => [
    
            // 略
    
            /*
             * 自作のFacade
             */
            'Greeting' => App\Facades\Greeting::class, // 追記
    
        ],
    

    Facade 호출


    Greeting::hello(); // 結果 hello
    

    컨트롤러 등의 namespace 중에서 사용하려고 하는 경우는
    글로벌 접두사 연산자 \를 붙여 주거나,
    (namespace중에서 글로벌한 클래스등을 사용하려고 하는 경우에 필요. 참고 )
    \Greeting::hello(); // 結果 hello
    

    또는,
    use Greeting;
    
    Greeting::hello(); // 結果 hello
    

    OK.

    좋은 웹페이지 즐겨찾기