Symfony 6无法自动注入第三方ServiceClient的问题求助
解决Symfony 6中第三方ServiceClient依赖注入报错问题
报错原因是Microsoft\BingAds\Auth\ServiceClient的构造函数参数$serviceClientType没有类型提示,Symfony自动装配无法识别该参数的取值,需要显式配置参数值,以下是两种可行方案:
方案1:关闭自动装配,手动配置构造参数
在config/services.yaml中直接指定服务的所有构造参数,适合参数取值固定的场景:
Microsoft\BingAds\Auth\ServiceClient: autowire: false arguments: $serviceClientType: 'CustomerManagementService' # 替换为你实际需要的Bing Ads服务类型 $authorizationData: '@App\Service\YourAuthorizationDataService' # 引用已注册的授权数据服务 $apiEnvironment: 'production' # 可选值:production/sandbox $options: {} # 按需传入配置数组,可省略
方案2:保留自动装配,通过参数绑定指定无类型参数
在全局默认配置中绑定无类型参数的取值,让Symfony自动装配时能识别:
services: _defaults: autowire: true autoconfigure: true bind: $serviceClientType: 'ReportingServiceV13' # 绑定参数到固定值 $apiEnvironment: 'sandbox' Microsoft\BingAds\Auth\ServiceClient: autowire: true arguments: # 若$authorizationData是有类型的类实例,Symfony会自动注入;否则需显式指定 $authorizationData: '@App\Service\YourAuthorizationDataService'
注意事项
$serviceClientType的具体值需参考Bing Ads官方文档,对应你要调用的API服务类型;$authorizationData如果是Microsoft\BingAds\Auth\AuthorizationData类的实例,只要该类已被Symfony自动注册为服务,即可自动注入;- 若
$options有自定义配置,直接传入数组即可。
内容的提问来源于stack exchange,提问作者Filip Stojanovic
相关产品推荐
相关产品推荐

