如何装修服务

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何装修服务

覆盖现有的定义时,原始服务丢失:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
#配置/ services.yaml服务:AppBundle \梅勒:~#这替换旧AppBundle \梅勒与新的定义,#老定义是迷路了AppBundle \梅勒:类:AppBundle \ NewMailer

大多数时候,这正是你想做的事。但有时,你可能想要装修旧相反(即应用装饰器模式)。在这种情况下,旧的服务应该保持在能够引用它。这个配置替换App \梅勒一个新的,但保持旧的一个参考App \ DecoratingMailer.inner:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#配置/ services.yaml服务:AppBundle \梅勒:~AppBundle \ DecoratingMailer:#覆盖AppBundle \梅勒服务#但AppBundle \ DecoratingMailer.inner服务仍然可用装饰:AppBundle \梅勒#通过旧服务作为参数参数:(“@AppBundle \ DecoratingMailer.inner”)#私人的,因为通常不需要获取AppBundle \ DecoratingMailer直接公众:

装修选项告诉容器AppBundle \ DecoratingMailer服务取代了AppBundle \梅勒服务。旧的AppBundle \梅勒服务是重命名为AppBundle \ DecoratingMailer.inner所以你可以将它注入你的新服务。

提示

的可见性(公共)装饰AppBundle \梅勒服务新服务(别名)仍将是和原来的一样AppBundle \梅勒可见性。

请注意

生成的内部id是基于id的装饰服务(AppBundle \ DecoratingMailer),而不是装饰的服务(AppBundle \梅勒这里)。你可以通过控制内部服务的名字decoration_inner_name选择:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml服务:AppBundle \ DecoratingMailer:#……decoration_inner_name:AppBundle \ DecoratingMailer.wooz参数:(“@AppBundle \ DecoratingMailer.wooz”)

装饰的优先级

将多个修饰符应用于服务时,您可以控制它们的顺序decoration_priority选择。它的值是一个整数,默认0和更高的优先级意味着修饰符将被应用。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#配置/ services.yamlFoo:~栏:公众:装饰:喷火decoration_priority:5参数:(“@Bar.inner”)记者:公众:装饰:喷火decoration_priority:1参数:(“@Baz.inner”)

生成的代码如下:

1
美元- >服务(Foo::类]=巴兹(栏(Foo ()));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。