2014-11-25 1 views
-2

저는 지금 당분간을 찾고 있었지만 방법을 찾지 못했습니다.추상 팩토리를 사용하여 서비스 로케이터를 통해 공유되지 않는 객체를 가져올 수 있습니까?

기본적으로 공유 객체를 가져 오는 추상 팩토리가 있습니다. 서비스를 요청할 때마다 서비스 위치 지정자에게 새 인스턴스를 제공하도록 알려줄 수 있습니까?

공유 설정 매개 변수는 서비스의 이름 (따라서 추상적 인 공장)을 등록하지 않기 때문에 또한 작동하지 않습니다 invokables$serviceManager->setShared()와 함께 작동하는 것으로 보인다.

+0

코드를 추가하면 별 모양이됩니다 –

+1

우연히 initalizers의 기능을 수행하고 싶습니까? http://framework.zend.com/manual/2.2/en/modules/zend.service-manager.intro.html – cptnk

답변

1

기본적으로 모든 서비스는 공유되며 차이는 없습니다. 이 생성됩니다.

처음으로 $serviceManager->get('foo')을 호출하면 instance of the service and then store that value in memory, keyed by it's canonical name이 생성됩니다.

두 번째 호출 $serviceManager->get('foo')match this stored value and return the same instance입니다.

위의 명백한 예외는 서비스 관리자에서 '기본적으로 공유'옵션을 사용 중지하거나 또는 config 모듈의 shared 구성 키에 false 값을 추가하는 것입니다.

+0

이전에 잘못된 방법으로 테스트 한 것 같습니다. '공유'설정 키를 설정하는 것으로 충분합니다. cptnk는 요청 된 클래스의 DI 초기화 프로그램에서 $ sm-> setShared()를 사용하여 나에게 방향을 알려주었습니다. – chaos0815

관련 문제