누구나 나를 위해 공기를 맑게 해줄 수 있습니까? 왜 저장소 클래스에 의해 인터페이스를 구현하고 서비스 공급자에 바인딩 할 필요가 있습니까 ?? 특정 클래스와 바인딩 된 경우 인터페이스의 용도는 무엇입니까 ?? 그렇다면 컨트롤러에 저장소 자체를 삽입 할 수없는 이유는 무엇입니까? 마지막으로, 어쨌든 종속성은 무엇입니까? 감사합니다. .Laravel Dependency Injection and bindings
-1
A
답변
0
서비스 공급자는 서비스/저장소를 응용 프로그램에 바인딩합니다. Interface (종속성 삽입의 속성 유형으로 사용될 수 있음) 또는 별칭 (예 : 'foo.bar')과 바인딩되어야합니다.
별칭 사용의 단점은 종속성이 응용 프로그램 내에서 유지되는 클래스 자체 여야한다는 것입니다. 계약 (인터페이스)을 사용하면 IoC 패턴에 따라 등록 된 저장소가 주어진 인터페이스를 구현할 수 있으므로 서비스 제공 업체를 교체하여 주 스토리지 저장소를 변경하는 경우와 같이 공급 업체 코드를 변경할 수 있으므로 만약 싱글 톤이 메인 인터페이스에 등록 되었다면 인젝션은 여전히 작동 할 것이다.
Laravel 핵심 기능을 대체하기 위해 일부 공급 업체 (또는 자체 코드)를 사용하려는 경우 종속성 삽입 기능은 계속 작동하지만 Laravel과 동일한 계약을 구현하는 공급 업체 리포지토리를 제공하면됩니다.