- 부트스트래핑 ( 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 명령어를 통해서 새로운 프로바이더를 생성할 수 있다
'Framework & Library > Laravel' 카테고리의 다른 글
라라벨 입문 중의 소소한 정리 5. PHP $this 와 self 의 차이점 (0) | 2021.05.25 |
---|---|
라라벨 입문 중의 소소한 정리 4. isset(), empty() (0) | 2021.05.25 |
라라벨 입문 중의 소소한 정리 2. Model, controller (0) | 2021.05.21 |
라라벨 입문 중의 소소한 정리 1. compact(), 범위 확인 연산자 :: (1) | 2021.05.18 |
Laravel 개발 환경구축 1. 가상머신 설치, 프로젝트 생성 (0) | 2021.05.11 |