【问题标题】:Symfony2: How to override a single service from the bundle, with my own class?Symfony2:如何使用我自己的类覆盖捆绑包中的单个服务?
【发布时间】:2016-03-31 20:47:32
【问题描述】:

这似乎应该是最基本的事情,但我找不到任何信息。如果 bundle 定义了多个服务,我如何用自己的服务覆盖单个服务?

例如,如果我有一个已定义服务的捆绑包,该捆绑包的另一个服务正在使用该捆绑包,因为它实现了某些接口:

myapp_user.user.factory:
    class: MyApp\UserBundle\User\UserFactory
    arguments: ["@myapp_user.user.config_manager"]

我想用我自己的来覆盖这个服务,就像这样:

myapp_user.user.factory:
    class: MyApp2\UserBundle\User\UserFactory
    arguments: ["@myapp_user.user.config_manager"]

我认为它应该很简单,整个容器的想法不就是 - 能够轻松切换服务/依赖项吗?但是我找不到任何关于它的信息。有关于创建“父”包和覆盖“具有服务定义的文件”的信息,但没有关于单个服务的信息。我错过了什么吗?我真的不想使用“父捆绑包”来用我自己的服务替换一项服务。

【问题讨论】:

  • 它应该可以工作,但是你必须在第一个之后声明你的自定义服务,你的包必须在第一个之后加载。

标签: symfony service dependency-injection


【解决方案1】:

感谢 Raphaël Malié,我找到了答案。问题确实与声明服务的文件的导入顺序有关。傻我:)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2013-09-10
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多