- 컨테이너 바인딩
- 기본바인딩
- 서비스컨테이너 바인딩
- 서비스프로바이더 register() 에서 등록함
- 일반클래스는 등록할 필요가 없으며 인터페이스 구현객체인 경우 등록해서 사용함
- 인터페이스와 클로저를 파라미터로 전달하여 바인딩
- 컨트롤러와 같은 클래스에서 바인딩한 인터페이스를 타입힌트로 지정하면 클로저에 정의한 구현체가 자동으로 의존성 주입됨
- 예) PostController.php 생성자에 Transistor 인터페이스 타입힌트를 지정하면 구현체인 PodcastParser::class 주입
# AppServiceProvider.php
use App\Services\Transistor;
use App\Services\PodcastParser;
...
public function register()
{
//
$this->app->bind(Transistor::class, function ($app) {
return new PodcastParser();
});
}
...
# PostController.php
use App\Services\Transistor;
use App\Services\PodcastParser;
public function __construct(Transistor $transistor)
{
$this->transistor = $transistor;
}