Основная идея заключается в том, чтобы определить сервис, который будет обрабатывать все маркированные услуги определенного типа, а затем в проходе компилятора добавьте тегированные службы к этой службе.
Принимая пример из документации на Working with Tagged Services, вы можете добавить метод, который возвращает все услуги:
<?php
// ...
class TransportChain
{
// ...
/**
* @return array
*/
public function getTransports()
{
return $this->transports;
}
}
А потом из везде, где есть доступ к DIC, просто используйте:
// Get access to all services tagged with "acme_mailer.transport"
$transports = $this
->getContainer()
->get('acme_mailer.transport_chain')
->getTransports()
;
Конечно, вам придется немного изменить все это, чтобы, возможно, вернуть строки вместо объектов.