Service Container/Service Provider Flashcards
무엇이든 개발할 때 많은 클래스들이 생기는데
이걸 라라벨은
서비스라고 부른다
클래스를 app() 헬퍼로 사용하기 위해서
먼저 해야할 것은
컨테이너에 클래스들을 등록해야한다
인스턴스를 만들 때 필요한 라라벨 도구
서비스 프로바이더
Geolocation 클래스의 생성자에
__construct(Map $map, Satelite $satelite)
이런 식으로 의존성이 있다
이때 유용한 도구는?
서비스 프로바이더
서비스 프로바이더에 있는 메소드
register
boot
프로바이더의 register 메서드는
어떻게 인스턴스로 만드는 지 결정한다.
인스턴스 만드는 방법을 ~라고 한다.
바인딩
public function register()
{
$this->app->bind(Geolocation::class, function ($app) {
$map = new Map();
$satelite = new Satelite();
return new Geolocation($map, $satelite); }); }
무슨 코드인가?
서비스 프로바이더에 바인딩하는 방법을 알려주고 있다
서비스 프로바이더에 바인딩을 한 후,
바로 사용할 수는 없다.
뭘 해야하는가?
config/app.php의
providers에 등록을 해야한다.
프로바이더를 app.php에 등록한 후에 사용하려면
리졸브를 해야한다
app() 으로
Namespace를 지정히지않고
바로 리졸브하려면
app(\App\Services\Geolocation\Geolocation::class)
->search()
app() 헬퍼와 make로 리졸브하려면
app()->make(\App\Services\Geolocation\Geolocation::class)
->search()
프로바이더의 boot 메서드들이
호출이 되는 시기는
바인딩 다음에 호출된다
인스턴스로 바로 사용하는 거를 ~라고 한다.
리졸브
서비스 컨테이너랑 동일한 단어
DI 컨테이너
IOC 컨테이너
앱 컨테이너
서비스 컨테이너