2014-02-07 5 views
0

ioc 컨테이너를 사용하지 않는 콘텐츠 관리 시스템 용 플러그인을 작성하고 있습니다.플러그인 내의 phoc ioc 컨테이너

내 플러그인이 확장해도 프레임 워크가 하나도 사용하지 않지만 내 모든 클래스를 관리하기 위해 내 플러그인 내 Pimple과 같은 자체 ioc 컨테이너를 사용하는 것이 좋습니다.

답변

0

나는이 오래된 질문 실현하지만 여기 간다 :

그것은 IOC의를 사용하는 것이 좋습니다 항상입니다. 그것은 당신이 객체 생성을 분리하고 사용하는 것을 도와줍니다.

질문은 더 비슷합니다. 할 수 있습니까? IoC 컨테이너는 CMS에서 필요로하는 모든 공유 종속성 인스턴스를 알고 있어야합니다 (그렇지 않으면 새 인스턴스를 만듭니다). 따라서 자신의 개체 생성을 요청하기 전에 IoC 컨테이너를 모두 나열해야합니다. 이로 인해 문제가 발생할 수 있습니다.

해당 CMS의 단일 공유 종속성을 사용하는 경우를 상상해보십시오. 또한 10 개의 다른 공유 종속성을 사용하는 CMS가 있으며 CMS를 통해 인스턴스화 된 드문 경우가 있습니다. 이 주입이 작동하려면 11 개의 종속성 인스턴스를 모두 IoC에 추가해야합니다. 단 하나의 시간 만 필요로하고 다른 10 개의 인스턴스는 인스턴스화되지 않았을 것입니다 (하지만 지금은 그렇습니다. 당신은 그들에게 인스턴스가 필요했습니다). 또한 코드를 복제하고 IoC에 위임 할 작업이기 때문에 인스턴스 선택시 제공하는 종속성에 동일한 논리를 추가하지 않아야합니다.

결론적으로, 플러그인이 CMS의 싱글 톤 서비스 (참고 : 싱글 톤 패턴이 아니라 공유 인스턴스)에 크게 의존하는 경우 실제로 그렇게 효율적으로 수행 할 수 없습니다. 공용 범위 (싱글 톤 패턴)에서이 모든 것을 액세스 할 수 있다면 그렇게 할 수는 있지만 플러그인을 테스트 할 수 없으며 IoC의 목적도 없앨 수 있습니다.

CMS에서 직접 종속성을 만들거나 실제로 종속성을 사용하지 않거나 필요한 모든 종속성을 항상 사용하는 경우에는 유용하지만 거의 사용되지 않습니다.