Мое приложение представляет собой набор POPO, и я пытаюсь связать эти POPO с помощью Zend Framework 2 Service Manager.
Чтобы проиллюстрировать мою проблему, возьмем следующий пример:
$config = array(
'services' => array(
'my.app.serviceA' => new \My\App\Services\ServiceA(),
'my.app.serviceB' => new \My\App\Services\ServiceB(),
'my.app.manager.task' => new \My\App\Manager\TaskManager(),
),
);
Мой класс TaskManager выглядит примерно так:
class TaskManager {
protected $serviceA;
protected $serviceB;
public function setServiceA( \My\App\Service\ServiceA $serviceA )
{
$this->serviceA = $serviceA;
}
public function setServiceB( \My\App\Service\ServiceB $serviceB )
{
$this->serviceB = $serviceB;
}
}
Как видите, класс TaskManager
имеет зависимости как от ServiceA
, так и от ServiceB
. Как внедрить эти службы в my.app.manager.task
с помощью конфигурации Service Manager, используя имена служб, определенные как для ServiceA
, так и для ServiceB
?
ОБНОВЛЕНИЕ:
Я начинаю думать, что вообще не должен использовать компонент ServiceManager для своих целей, а вместо этого должен использовать компонент Zend DI.
У меня сложилось впечатление, что ServiceManager является компонентом «каркаса» ZF2, тогда как Zend\DI кажется более универсальным DiC для всех целей. Следовательно, это может быть причиной связанных отношений ServiceManager с компонентами MVC и ModuleManager (которые также кажутся компонентами «фреймворка»).
Может быть, кто-нибудь прояснит?