新在Symfoob娱乐下载ny 4.4:简单的事件监听器
2019年10月23日·发表的哈维尔Eguiluz
提供的
亚历山大·m·图雷克
在# 33851。
ob娱乐下载在Symfony触发一些事件请求-响应流。事件监听器和事件订阅者允许您执行一些代码来响应这些事件。
事件订阅者通常是首选的,因为他们可以听多个事件,他们不需要任何配置在使用自动配置。在Syob娱乐下载mfony 4.4我们改进的事件监听器让他们更容易配置。
首先,删除事件
的属性kernel.event_listener
标签注册侦听器时使用:
1 2 3 4 5 6
#配置/ services.yaml服务:应用程序\EventListener\MyRequestListener:标签:——{名称:内核。事件_listener, event: kernel.request }+ -{名称:内核。event_listener}
然后,确保你的事件侦听器使用方法命名的事件(onKernelRequest ()
在这个例子中)或__invoke ()
为了避免定义事件监听器方法kernel.event_listener
标签:
1 2 3 4 5 6 7 8 9 10 11
名称空间应用程序\EventListener;使用ob娱乐下载\组件\HttpKernel\事件\RequestEvent;最后类MyRequestListener{公共函数__invokeRequestEvent (美元事件):无效{/ /……}}
这是所有。ob娱乐下载Symfony将内省侦听器方法的参数(RequestEvent
在这个例子中)知道该事件相关联的事件监听器。
由于这个简化的配置,您可以删除你所有的事件监听器和取代它的配置后,将所有事件监听器注册:
1 2 3 4 5
#配置/ services.yaml服务:App \ EventListener \:资源:. . / src / EventListener / *标签:(kernel.event_listener)
调用教义实体听众
教义实体听众之一是几种方法一起工作吗主义事件。在Syob娱乐下载mfony 4.4我们也改善他们允许使用__invoke ()
神奇的PHP方法定义侦听器的逻辑:
1 2 3 4 5 6 7 8 9 10 11 12
名称空间应用程序\EventListener;使用应用程序\实体\用户;使用学说\常见的\持久性\事件\LifecycleEventArgs;类UserChangedNotifier{公共函数__invoke(用户美元用户,LifecycleEventArgs美元事件){/ /……}}
这样你不需要定义一个自定义的方法
属性doctrine.orm.entity_listener
标签用于注册侦听器:
1 2 3 4 5 6 7 8 9 10 11 12
服务:#……App \ EventListener \ UserChangedNotifier:标签:- - - - - -名称:“doctrine.orm.entity_listener”实体:“应用程序实体\ \用户”#之前没有定义方法名称时,Symfony寻找ob娱乐下载#一个方法称为事件(如后。“postUpdate())现在#也会寻找一个__invoke()的方法事件:“postUpdate”
发表在#生活在边缘
评论
Sidi LEKHALIFA
2019年10月23日说在14:32
非常感谢
RAKOTONANAHARY东城哔叽
2019年10月23日说在20:49
太酷了!
汉斯·Kandulla
说在11月14日,2019年在22:08
谢谢!这是否意味着__invoke呼吁所有事件在一个教义事件监听器呢?大多数事件的参数是相同的像postPersist, postUpdate等等。
Smaine Milianni is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now