事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,也降低了BUG的可能性。
那么怎么理解和更好的使用tp6事件系统?
事件基于观察者模式设计,所以首先我们要明确什么是观察者模式? 它有什么优势?
观察者模式是为了解决对象间一对多依赖关系的问题而设计的. 这里的一就是指主题,这里多就是指观察者, 当主题状态发生变化时,就会通知所有的观察者进行内部更新. 两个关键元素:
观察者模式的优势: 主题只需要关心通知逻辑, 不关心观察者内部的具体实现, 实现解耦;
再让我们回到thinkphp6的事件机制, 它拥有四个操作: