我对事件和观察者很困惑,因为它们都在做相同的事情。事件和观察者之间有什么区别?提前感谢。
观察者和事件完全不是同样的事情。
简单区别
观察者基本上是预定义事件,仅在 Eloquent 模型中发生(创建记录、更新记录、删除等)。事件是通用的,不是预定义的,并且可以在任何地方使用,不仅仅是在模型中。
观察者:
观察者监视在 eloquent 中发生的特定事情,例如 saving、saved、deleting、deleted(还有更多,但你应该明白了)。观察者专门绑定到一个模型上。
事件:
事件是由程序员驱动的操作。如果您想在某人加载页面时触发事件,可以这样做。与观察者不同,事件也可以是队列,并通过 laravel 的 cron heartbeat 运行。事件有效地由程序员定义。它们使您能够处理用户不希望等待的操作(例如购买播客)。
文档非常好地涵盖了这些内容。
参考来源:https://www.scratchcode.io/laravel/difference-between-events-and-observers-in-laravel/
好的。所以,先澄清一件事情:事件和观察者不是在做同样的事情。
什么是事件?
当特定任务发生时触发事件。例如,某个模型被创建、更新、删除(这些是 Laravel 的默认操作)。您也可以调度/触发自定义事件,例如product.liked
或user.commented
。
https://laravel.com/docs/5.7/events#defining-events
观察者是什么?
正如其名称所示,这些类观察/处理上述事件。因此,如果我们说我们想在创建用户或用户正在创建时(这是在将条目输入到数据库之前)执行某些操作。我们定义观察者,如果您熟悉before和after方法的方法论,您可以理解。