在由bundle动态创建的服务上调用方法

COi*_*Oil 6 service yaml dependency-injection symfony

我正在使用m6web_guzzlebundle来注册几个http客户端:

m6web_guzzlehttp:
    clients:
        myclient:
            timeout: 3
            headers:
                "Accept": "application/json"
            delay: 0
            verify: false
Run Code Online (Sandbox Code Playgroud)

我想在动态生成的服务上调用方法.在这种情况下,生成的服务名称是:

@m6web_guzzlehttp.guzzle.handlerstack.myclient
Run Code Online (Sandbox Code Playgroud)

这是我在服务构造函数中所做的:(注入的第三个参数是'@ m6web_guzzlehttp.guzzle.handlerstack.myclient')

/**
 * @param array        $parameters
 * @param Client       $client
 * @param HandlerStack $handlerStack
 */
public function __construct(array $parameters, Client $client, HandlerStack $handlerStack)
{
    $this->parameters = $parameters;
    $this->client = $client;
    $this->handlerStack->push(Middleware::retry([$this, 'retryDecider']));
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,它运行良好,但如何push在我的services.yml文件中传输最后一行(调用)?或者另一种清理方法来注册此重试处理程序?

xab*_*buh 2

您可以编写一个编译器传递来获取相关定义并向其添加方法调用。