Я немного запутался в суффиксе имени Manager
и Service
.
Насколько я понимаю разницу, Managers
отвечают за обработку (создание, извлечение, удаление,...) определенных типов объектов. Например, ModuleManager
отвечает за загрузку и возврат Modules
. В этом случае вы заботитесь о фактической сущности, Module
.
Однако Services
являются классами, которые предоставляют интерфейсы для выполнения типов цетенов логики процесса. Например, a LogService
отправляет данное сообщение журнала определенному журналиру. Вам все равно, куда оно идет и что он делает, вы просто хотите, чтобы администратор был проинформирован о том, что только что произошло.
Теперь ZF2 предоставляет ServiceManager
, который создает и возвращает экземпляры заданного Service
. Я случайно привык к созданию Managers
и предоставлению factory
для ServiceManager
, чтобы вы могли получить доступ к Manager
с помощью $this->getServiceLocator()->get('managerName');
в контексте Controller
, чтобы держать контроллеры маленькими и реальную логику в проверяемые классы. Это та часть, которая меня путает прямо сейчас, потому что, очевидно, не может быть рекомендовано извлечь Managers
с помощью ServiceLocator
. НО: Я не единственный, кто это делает: модуль Doctrine ORM
является еще одним примером для этого: он регистрирует EntityManager
как doctrine.entitymanager.orm_default
Service
по умолчанию.
Я получаю истинную разницу между Services
и Managers
неправильно? Есть ли разница? Возможно ли Managers
унаследовано от Services
в концепции?