如何布置服务
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何布置服务
重写现有定义时(例如,当应用装饰器模式),原来的服务将会丢失:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
服务:app.mailer:类:AppBundle \梅勒#将旧的app.mailer定义替换为新的app.mailer定义#旧定义丢失app.mailer:类AppBundle \ DecoratingMailer
大多数时候,这正是你想要做的。但有时,你可能想要装饰旧的。在这种情况下,应该保留旧服务,以便能够在新服务中引用它。这个配置替换了app.mailer
用一个新的,但把旧的作为参考app.decorating_mailer.inner
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
服务:#……app.decorating_mailer:类:AppBundle \ DecoratingMailer装饰:app.mailer参数:(“@app.decorating_mailer.inner”)公众:假
这里发生了什么:装修
选项告诉容器app.decorating_mailer
服务替换app.mailer
服务。按照惯例,老年人app.mailer
服务被重命名为app.decorating_mailer.inner
,这样您就可以将其注入到新服务中。
提示
大多数情况下,装饰器应该声明为private,因为您不需要将其检索为app.decorating_mailer
从容器里。
装饰的可见性app.mailer
服务(这是新服务的别名)将仍然与原始服务相同app.mailer
可见性。
请注意
生成的内部id基于装饰器服务的id (app.decorating_mailer
这里),而不是装饰的服务(app.mailer
这里)。这是强制的,以允许同一服务上有多个装饰器(它们需要有不同的生成的内部id)。
控件可以更改内部服务名称decoration_inner_name
选择:
- YAML
- XML
- PHP
1 2 3 4 5
服务:app.mailer:#……decoration_inner_name:app.decorating_mailer.wooz参数:(“@app.decorating_mailer.wooz”)
装饰的优先级
如果您想将多个decorator应用到一个服务中,您可以通过配置装饰的优先级来控制它们的顺序,这可以是任何整数(优先级较高的decorator将首先应用)。
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
foo:类:喷火栏:类:酒吧公众:假装饰:喷火decoration_priority:5参数:(“@bar.inner”)记者:类:巴兹公众:假装饰:喷火decoration_priority:1参数:(“@baz.inner”)
生成的代码如下所示:
1
$这->服务(“foo”] =新巴兹(新栏(新Foo ())));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。