Service Container/Service Provider Flashcards

1
Q

무엇이든 개발할 때 많은 클래스들이 생기는데

이걸 라라벨은

A

서비스라고 부른다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

클래스를 app() 헬퍼로 사용하기 위해서

먼저 해야할 것은

A

컨테이너에 클래스들을 등록해야한다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

인스턴스를 만들 때 필요한 라라벨 도구

A

서비스 프로바이더

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Geolocation 클래스의 생성자에

__construct(Map $map, Satelite $satelite)

이런 식으로 의존성이 있다

이때 유용한 도구는?

A

서비스 프로바이더

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

서비스 프로바이더에 있는 메소드

A

register

boot

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

프로바이더의 register 메서드는

A

어떻게 인스턴스로 만드는 지 결정한다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

인스턴스 만드는 방법을 ~라고 한다.

A

바인딩

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

public function register()
{
$this->app->bind(Geolocation::class, function ($app) {
$map = new Map();
$satelite = new Satelite();

        return new Geolocation($map, $satelite);
    });
}

무슨 코드인가?

A

서비스 프로바이더에 바인딩하는 방법을 알려주고 있다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

서비스 프로바이더에 바인딩을 한 후,

바로 사용할 수는 없다.

뭘 해야하는가?

A

config/app.php의

providers에 등록을 해야한다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

프로바이더를 app.php에 등록한 후에 사용하려면

A

리졸브를 해야한다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

app() 으로

Namespace를 지정히지않고

바로 리졸브하려면

A

app(\App\Services\Geolocation\Geolocation::class)
->search()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

app() 헬퍼와 make로 리졸브하려면

A

app()->make(\App\Services\Geolocation\Geolocation::class)
->search()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

프로바이더의 boot 메서드들이

호출이 되는 시기는

A

바인딩 다음에 호출된다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

인스턴스로 바로 사용하는 거를 ~라고 한다.

A

리졸브

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

서비스 컨테이너랑 동일한 단어

A

DI 컨테이너

IOC 컨테이너

앱 컨테이너

서비스 컨테이너

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

컨테이너라는 코드는

A

존재하지 않는다.

그냥 바인딩하는 곳을 컨테이너라고 부른다.

17
Q

라라벨에서

모든 컨트롤러의 메서드는

A

컨테이너에서 의존성이 모두 해결된다

18
Q

사실 라라벨의 컨트롤러에서

지정하는 네임스페이스들은

A

서비스 컨테이너가 주입을 하는 거다.