У меня есть основная служба, которая должна запускать вспомогательные службы в зависимости от параметра.
class MainService
{
/**
* $serviceIds = ['sub-a', 'sub-b', 'sub-c']
*/
public function run(array $serviceIds)
{
foreach($serviceIds as $id) {
$subservice = $this->getSubService('service.' . $id);
$subservice->doSomething();
}
}
}
MainService должен запускать только несколько подсервисов, но в service.yml зарегистрировано до 80 подсервисов.
Я не хочу вставлять их все в MainService, потому что во время выполнения это означает, что они будут загружены в память. Я хочу, чтобы загружались только полезные сервисы.
Я знаю, что если я внедряю сервисный контейнер в конструктор MainService, я могу получить доступ к этим конкретным подсервисам, но я много раз читал, что внедрение сервисного контейнера - это плохо.
Вы знаете, как я могу справиться с этим?