Laravel을 처음 배우는 초보자가 문서에 나오는 컨테이너와 종속성 주입을 이해하기 쉽게 설명해 주실 수 있나요? 실제 프로젝트에서는 어디에 사용해야 하나요?
Laravel을 처음 배우는 초보자가 문서에 나오는 컨테이너와 종속성 주입을 이해하기 쉽게 설명해 주실 수 있나요? 실제 프로젝트에서는 어디에 사용해야 하나요?
이 글은 잘 쓰여졌습니다 http://laravelacademy.org/pos...
Service Container
클래스 A의 작업이 클래스 B와 C에 의존해야 하는 경우 전통적인 방법은 B와 C가 제공하는 서비스를 사용하기 전에 클래스 A 내부에서 새로운 B와 새로운 C를 수행하는 것입니다. A, B, C 심각한 결합. 그러나 Service Container
을 사용하면 종속성 구성 프로세스를 컨테이너로 해결할 수 있으며 클래스 A는 Constructor
또는 Method Getter/Setter
에 클래스 B와 C 또는 B와 C의 추상화(인터페이스)만 주입하면 됩니다. 종속성 주입과 메서드 종속성 주입(Dependency Injection
)은 클래스 A를 B와 C에서 분리하는 것을 실현합니다. 예: B와 C의 인터페이스가 주입되면 언제든지 B와 C를 교체하여 D, E가 될 수 있습니다. D와 E는 해당 인터페이스만 구현하면 되므로 A는 B와 C와 느슨하게 결합됩니다.
Laravel에서 서비스 컨테이너에 서비스를 바인딩하는 방법에는 세 가지가 있습니다. bind(),singleton(),instance()
서비스를 구문 분석하는 방법은 make()
방법입니다. \Illuminate\Container\Container::getDependencies(),\Illuminate\Container\Container::call()
메서드는 생성자 종속성 또는 메서드 종속성을 해결하는 데 사용됩니다. 중요한 지식 포인트 중 하나는 PHP의 Reflection 기능을 사용하는 것입니다.
자세한 내용은 소스코드를 확인해주세요. 이것이 도움이 되기를 바랍니다.