在Symfony 4项目中,我利用eightpoints/guzzle
捆绑软件对远程API进行了调用。安装捆绑软件(并在单独的yaml文件中配置客户端)后,我按照this quide进行了自动接线,这使客户端可以正常工作。然后使用一些更高级的方法来扩展我的客户端类(即,该类来自GuzzleHttp\Client
的类,与上述指南中的ApiPaymentClient
类等效),该类可以处理我需要的调用,也很棒。
问题是:有没有办法让我的客户舱接受额外的参数?具体来说,我想在parameters
的{{1}}部分中定义一个参数,然后将其绑定到客户端类构造函数中的特定附加参数(该参数随后将参数值存储在私有变量中)方法中使用的变量),即
services.yaml
class MyClient extends GuzzleHttp\Client
{
public function __construct($config, $apiKey)
{
parent::__construct($config);
$this->apiKey = $apiKey;
}
/*...*/
}
中客户服务的定义最初(即上述指南的结果)如下:
services.yaml
确保App\Client\MyClient: '@eight_points_guzzle.client.my_client'
获得
MyClient
部分位于单独的捆绑包配置文件(eight_points_guzzle:
clients:
my_client:
)中。
如何更改eight_points_guzzle.yaml
服务定义以接受额外的参数并仍然从App\Client\MyClient
获取配置?到目前为止,我已经管理了一项或另一项工作,但没有两项都完成(即,进行绑定工作将无法读取eight_points_guzzle.yaml
中的客户端定义,反之亦然。)
最底线:是的,我可以在MyClient类中将参数定义为类const,但是我不喜欢这种解决方案。更不用说这种情况了,我一天将需要通过一项服务,而不仅仅是一个简单的变量。