본문 바로가기

Framework & Library/Laravel

라라벨 입문 중의 소소한 정리 3. bootstrapped

 

- 부트스트래핑 ( bootstrapped )

: 서비스 컨테이너에 바인딩을 등록하는 것을 포함해서 이벤트 리스너, 미들웨어 그리고 라우트 등을 등록 하는 것

모든 서비스 프로바이더는 Illuminate\Support\ServiceProvider 클래스를 상속한다

대부분의 서비스 프로바이더는 register 와 boot 메소드를 가지고 있다

register 메소드 안에서는 서비스 컨테이너에 무언가를 바인딩 하는 작업만을 수행 해야 한다
그렇지 않으면, 서비스 프로바이더가 아직 로드하지도 않은 서비스를 사용해 버릴 수도 있다


-기본적인 서비스 프로바이더의 구조

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Riak\Connection;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection(config('riak'));
        });
    }
}


서비스 프로바이더의 메소드 안에서 언제든지 $app 속성을 사용할 수 있으며, 이를 통해 서비스 컨테이너에 접근할 수 있다

이 서비스 프로바이더는 register 메소드만 정의되어 있고,
이 메소드를 통해서 서비스 컨테이너에 Riak\Connection 구현 객체를 정의하고 있다


-프로바이더 등록

: 모든 서비스 프로바이더들은 config/app.php 설정 파일에 등록되어 있다

위의 파일에는 서비스 프로바이더들의 클래스 이름을 나열하고 등록할 수 있는 providers 배열이 포함되어 있다

기본적으로 라라벨의 코어 서비스 프로바이더들이 [배열]에 나열되어 있다

이 프로바이더들이 라라벨의 메일러, 큐, 캐시등과 같은 핵심적인 컴포넌트들을 부트스트랩핑 하게 된다

사용자 정의 프로바이더들을 등록하려면 이 배열에 추가 하면 된다!

'providers' => [
    // Other Service Providers

    App\Providers\ComposerServiceProvider::class,
],




 register 메소드안에서는 다른 이벤트 리스너나 라우트 또는 기타 기능의 일부등을 등록하지 말아야 한다

아티즌 CLI에서는 make:provider 명령어를 통해서 새로운 프로바이더를 생성할 수 있다