Symfony中如何继承Vendor包的服务定义以覆写方法?
覆写Vendor服务的foo方法配置方案
要让自定义子类SamlUserProvider替换原Vendor的SamlProvider服务并继承其依赖配置,可按以下方式在services.yaml中配置:
方式一:直接继承原服务配置(推荐)
利用Symfony的服务继承特性,直接复用原服务的所有依赖、标签等配置,只需替换类名:
services: App\Security\SamlUserProvider: parent: Vendor\Namespace\SamlProvider # 替换为原Vendor服务的完整服务ID class: App\Security\SamlUserProvider # 指定自定义子类
提示:原Vendor服务的ID可通过
bin/console debug:container命令搜索SamlProvider类名获取。
方式二:手动注入依赖并覆盖原服务
如果原服务无法通过parent继承配置,可手动复制原服务的构造参数注入,再将原服务指向自定义类:
services: # 注册自定义服务,注入原服务的相同依赖 App\Security\SamlUserProvider: arguments: - '@security.user.provider.concrete.saml' # 原服务的userProvider依赖ID - '@event_dispatcher' # 原服务的eventDispatcher依赖ID # 将原Vendor服务替换为自定义服务的别名 Vendor\Namespace\SamlProvider: alias: App\Security\SamlUserProvider
验证替换结果
执行以下命令查看服务的实际实现类:
bin/console debug:container Vendor\Namespace\SamlProvider
若输出的Class字段显示为你的App\Security\SamlUserProvider,则说明配置生效。
内容的提问来源于stack exchange,提问作者Sebastian Viereck
相关产品推荐
相关产品推荐

