如何布置服务
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何布置服务
重写现有定义时(例如,当应用装饰器模式),原来的服务将会丢失:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
#配置/ services.yaml服务:App \梅勒:~#这将用新的App\Mailer定义替换旧的App\Mailer定义#旧定义丢失App \梅勒:类:App \ DecoratingMailer
大多数时候,这正是你想要做的。但有时,你可能想要装饰旧的服务,并保留旧的服务,以便你可以引用它:
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14
#配置/ services.yaml服务:App \梅勒:~App \ DecoratingMailer:#覆盖App\Mailer服务但是该服务仍然可用App\ decoratingmail .inner装饰:App \梅勒#将旧服务作为参数传递参数:(“@App \ DecoratingMailer.inner”)# private,因为通常你不需要直接获取App\DecoratingMailer公众:假
的装修
选项告诉容器App \ DecoratingMailer
服务替换App \梅勒
服务。旧的App \梅勒
服务被重命名为App \ DecoratingMailer.inner
这样您就可以将它注入到您的新服务中。
提示
被装饰者的可见度(公众App \梅勒
服务(这是新服务的别名)将仍然与原始服务相同App \梅勒
可见性。
请注意
生成的内部id基于装饰器服务的id (App \ DecoratingMailer
这里),而不是装饰的服务(App \梅勒
这里)。控件控制内部服务名decoration_inner_name
选择:
- YAML
- XML
- PHP
1 2 3 4 5 6
#配置/ services.yaml服务:App \ DecoratingMailer:#……decoration_inner_name:App \ DecoratingMailer.wooz参数:(“@App \ DecoratingMailer.wooz”)
装饰的优先级
类对服务应用多个装饰器时,可以控制它们的顺序decoration_priority
选择。取值为整数,默认为0
更高的优先级意味着更早地应用装饰器。
- YAML
- XML
- PHP
12 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:类] =新巴兹(新酒吧(新喷火()));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。