После небольшого исследования и сканирования источников Symfony я смог найти решение, которое соответствует моим потребностям: я вручную создаю экземпляр ArgumentResolver
и использую его.
ПРИМЕЧАНИЕ В моем случае использования необходимо разрешить объект, который не является службой, поэтому он не может быть разрешен механизмом внедрения зависимостей, как любая другая служба. Я включил это в свой ответ, поскольку это может быть полезно для других:
$resolvers = [];
array_push($resolvers, ...ArgumentResolver::getDefaultArgumentValueResolvers());
array_push($resolvers, new class implements ArgumentValueResolverInterface {
// implement the interface to resolve an argument with a specific type/name
});
$argument_resolver = new ArgumentResolver(new ArgumentMetadataFactory(), $resolvers);
// to use it:
$arguments = $argument_resolver->getArguments($request, [$datasource, 'query']);
$datasource->query(...$arguments);
Я надеюсь, что это будет полезно для других.
Я не могу подтвердить это как Решение, или ЛУЧШЕЕ решение, но это то, что, кажется, работает для моего варианта использования. Я приглашаю других комментировать / отвечать, чтобы мы могли вместе улучшить решение