Laravel中的事件与观察者

31

我对事件和观察者很困惑,因为它们都在做相同的事情。事件和观察者之间有什么区别?提前感谢。

3个回答

63

观察者和事件完全不是同样的事情。

简单区别

观察者基本上是预定义事件,仅在 Eloquent 模型中发生(创建记录、更新记录、删除等)。事件是通用的,不是预定义的,并且可以在任何地方使用,不仅仅是在模型中。

观察者:

观察者监视在 eloquent 中发生的特定事情,例如 saving、saved、deleting、deleted(还有更多,但你应该明白了)。观察者专门绑定到一个模型上。

事件:

事件是由程序员驱动的操作。如果您想在某人加载页面时触发事件,可以这样做。与观察者不同,事件也可以是队列,并通过 laravel 的 cron heartbeat 运行。事件有效地由程序员定义。它们使您能够处理用户不希望等待的操作(例如购买播客)。

文档非常好地涵盖了这些内容。

参考来源:https://www.scratchcode.io/laravel/difference-between-events-and-observers-in-laravel/


1
由于观察者类似于“预定义事件”,因此将它们变成可排队的会很好。 - JCarlosR

1

好的。所以,先澄清一件事情:事件和观察者不是在做同样的事情。

什么是事件?

当特定任务发生时触发事件。例如,某个模型被创建、更新、删除(这些是 Laravel 的默认操作)。您也可以调度/触发自定义事件,例如product.likeduser.commented

https://laravel.com/docs/5.7/events#defining-events

观察者是什么?

正如其名称所示,这些类观察/处理上述事件。因此,如果我们说我们想在创建用户或用户正在创建时(这是在将条目输入到数据库之前)执行某些操作。我们定义观察者,如果您熟悉before和after方法的方法论,您可以理解。

https://laravel.com/docs/5.7/eloquent#observers


0
Laravel观察者是与模型相关的事件处理程序。而Laravel事件是应用程序范围内的(不一定与特定模型相关,但也可能与之相关),需要附加处理程序/监听器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接