public function process(ContainerBuilder $container)
{
if (!$container->hasDefinition(self::SERVICE_ID) || !$container->hasParameter(self::PARAMETER_NAME)) {
return;
}
$config = $container->getParameter(self::PARAMETER_NAME);
$generators = [];
foreach ($container->findTaggedServiceIds(self::TAG_NAME) as $id => $tags) {
foreach ($tags as $attributes) {
$generators[$attributes['alias']] = $id;
}
}
$services = [];
foreach ($config as $item) {
$serviceId = $generators[$item['generator']];
$services[$item['generator']] = new Reference($serviceId);
// validate options
$generator = $container->get($serviceId);
$optionsResolver = $generator->getOptionsResolver($item['options']);
$optionsResolver->resolve($item['options']);
}
$definition = $container->getDefinition(self::SERVICE_ID);
$definition->replaceArgument(0, $services);
}