【发布时间】:2018-02-24 12:58:26
【问题描述】:
我正在使用m6web_guzzle 捆绑包来注册多个 http 客户端:
m6web_guzzlehttp:
clients:
myclient:
timeout: 3
headers:
"Accept": "application/json"
delay: 0
verify: false
我想在它动态生成的服务上调用一个方法。在这种情况下生成的服务名称是:
@m6web_guzzlehttp.guzzle.handlerstack.myclient
这是我在服务构造函数中所做的:(注入的第三个参数是'@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']));
}
到目前为止,它运行良好,但是如何转移我的services.yml 文件中的最后一行(push 调用)?还是另一种更简洁的方法来注册此重试处理程序?
【问题讨论】:
-
您可以编写一个compiler pass 来获取相关定义并向其添加方法调用。
标签: symfony service dependency-injection yaml