Symfonyob娱乐下载 4.4的新功能:依赖注入的改进(第2部分)
2019年11月28日·发表的哈维尔Eguiluz
改进的YAML方法调用语法
提供的
尼古拉斯Grekas
在# 33779.
服务方法调用和setter注入在为类构建服务时,在类上调用某些方法的不同方法。在Syob娱乐下载mfony 4.4中,我们改进了YAML语法,使其更简洁,更容易读/写:
1 2 3 4 5 6 7 8 9
#配置/ services.yaml服务:App\Service\MessageGenerator: # ... calls:- - method: setLogger——参数:- -“@logger”+ - setLogger: ['@logger']
打电话来枯萎的方法也被简化了:
1 2 3 4 5 6 7 8 9 10
#配置/ services.yaml服务:App\Service\MessageGenerator: # ... calls:- - method: withLogger——参数:- -“@logger”—returns_clone: true+ - withLogger: !returns_clone ['@logger']
更好地控制服务装修
提供的
马赛厄斯Arlaud
在# 33854.
装饰服务是Symfony依赖注入最流行和最强大的特性之一。ob娱乐下载在Syob娱乐下载mfony 4.4中,我们改进了它,这样你就可以控制被装饰的服务不存在时会发生什么:
1 2 3 4 5
#配置/ services.yaml服务:App \ NewMailer:装饰:App \梅勒decoration_on_invalid:忽略
如果App \梅勒
服务不存在时,此配置告诉Symfony忽略错误并删除ob娱乐下载App \ NewMailer
服务。其他可能的值是异常
而且零
.
的异常
值告诉Symfony抛出ob娱乐下载一个ServiceNotFoundException
它是默认值,因为它匹配当前行为。的零
价值使装饰的服务等于零
,因此装饰服务必须准备好处理空值。
带标签服务的优先级
提供的
格雷戈勒Pineau
在# 33628.
当注入标记服务对于其他服务,您可以为这些服务应用一些优先级,如下所示:
1 2 3 4 5 6 7 8 9
#配置/ services.yaml服务:_instanceof:App \处理程序:标签:-{名称:“app.handler”,优先级:20.}App \ HandlerCollection:参数:[!tagged_iteratorapp.handler]
然而,优先级(20.
在本例中)对于所有服务都是相同的。在Syob娱乐下载mfony 4.4中,我们改进了这个特性,允许为每个服务定义优先级。为此,定义agetDefaultPriority(): int
方法,并返回它们的优先级。方法配置此方法名default_priority_method
属性:
1 2 3 4 5
#配置/ services.yaml服务:#……App \ HandlerCollection:参数:[!tagged_iteratorapp.handler,default_priority_method:“calculateServicePriority”]
发表在#生活在边缘
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
前面语法中的'returns_clone: true'和新语法中的'withLogger: !returns_clone'。
我的意思是我希望这个'withLogger: returns_clone'。