2013-02-18 1 views
0

Просто изучая ZF2, и я немного смущен. У меня есть общее понимание ServiceManager и понимание того, как добавлять сервисы, а также использовать ServiceManagerAwareInterface, чтобы иметь возможность извлекать Сервисы в класс. Однако в моем поиске я столкнулся с ServiceLocatorAwareInterface.Zend Framework 2 - Разница между ServiceManagerAwareInterface и ServiceLocatorAwareInterface

Может ли кто-нибудь сказать мне разницу между двумя и какими сценариями я буду использовать каждый?

+1

Ответ, приведенный ниже, является хорошим, ServiceManager - это конкретная реализация ServiceLocator, вы должны использовать связанные с ServiceLocator инстансы – Andrew

ответ

4

ServiceManagerAwareInterface был представлен для удовлетворения конкретных потребностей компонента MVC, который требовал конкретной реализации локатора обслуживания. Это ограничение было отменено и ServiceManagerAwareInterface неофициально считается устаревшим.

Что касается вас, вы не хотите зависеть от конкретной реализации, а не от контракта. Следовательно, вы должны предпочесть ServiceLocatorAwareInterface.

+0

Означает ли это, что приложение Skeleton больше не будет содержать экземпляр ServiceManager? И в module.config.php я бы тогда настроил «service_locator», а не «service_manager»? –

+0

@ Аарон Мюррей, пожалуйста, избегайте 'ServiceManagerAwareInterface', если это не требуется строго. Если вам нужна инъекция «ServiceManager» (в частности), то у вас, вероятно, есть недостаток в вашей архитектуре. – Ocramius

+0

@AaronMurray no, конфигурация все равно будет использоваться для '' service_manager''. Не беспокойтесь об этом – Ocramius

 Смежные вопросы

  • Нет связанных вопросов^_^