Laravel 的 Events 及 Observers何时使用事件

什么是事件?如果你在谷歌中搜索这个词,你会得到多个结果。例如,它会被定义为已经发生或被视为发生的一些事;一次事故,尤其是特别重大的。它也可以定义为发生在一段特定时期内特定地点的事。

我喜欢这两个定义,因为它们与我们的内容很符合。事实上,在某种意义上,你可以把这段特定的时期看作模型的生命周期。

你可以创建一个新的实例,更新现有实例,或删除它。你可以做的每个操作都涉及到两个事件。

从基础上来说:我刚刚创建了一条记录,我删除了那条记录,我正在更新那条记录,听起来很自然,对吗?

在当模型的生命周期中,当发生一些事的时候,Eloquent 会触发一些事件:

creating
created
updating
updated
saving
saved
deleting
deleted
restoring
restored
对于每一个操作,都对应两个独立的事件。正如你可能想象的,它们指的是单独的时刻。我们已创建操作作为实例:

你有一个 creating 事件,可以理解为“创建操作即将发生”,而 created 表示“事件已经发生了”。

科学家可能会说:

creating:是表示 t – 1 时刻
created:是与 t + 1 时刻相关
所以,对于下面三个基本操作,都有两个对应的事件:创建 (create)、更新 (update) 和删除 (delete)。

此外,你还可以看到另外两个操作:保存 (save) 和恢复 (restore)。但是,请不要担心,他们并不复杂:

Save:你只需要知道,save 操作是与 create 和 update 相关的。我们假设你需要添加一个行为,应用程序是创建一条新的记录还是更新一条已有的记录。难道对相同的事情还要声明两次吗?只需一个普通的 save 操作即可。
Restroe:当你的某个模型用到了软删除,并执行撤销操作的时候,就会用到 restore 操作。
好吧,我知道你在想什么:这个概念更深一层的含义是什么呢?我们通过实例来解答

时间: 2024-09-29 19:27:08

Laravel 的 Events 及 Observers何时使用事件的相关文章

Laravel 的 Events 及 Observers 模型事件学习笔记

首先我们来看看这个被称为 模型事件(model events) 的技术.它的基本概念非常简单: 在 EventServiceProvider 中你可以添加一个特定的事件监听器,并绑定一个闭包函数 在闭包函数中,你不需要接触模型代码就可以添加新的行为 绑定操作必须放在类的 boot() 方法中 这是一个把创建 (created) 用户事件与闭包函数进行绑定的简单示例.闭包的 $user 参数包含了指定用户的实例:   public function boot(DispatcherContract

Laravel 的 Events 及 Observers模型事件的实例

我们以一个比较经典的例子开始.当一个新用户注册的时候,我们希望给他发一封欢迎的邮件.这个其实非常的简单.我们只需打开 EventServiceProvider 类,然后在 parent::boot() 方法后面添加下面的代码:   User::created(function($user){       Mail::send('emails.welcome', ['user' => $user], function($message) use ($user)     {         $mes

Laravel 的 Events 及 Observers模型观察者的实例

首先,我们为你展示如何通过模型观察者实现前面模式事件中的第一个例子. 在 app/Observers 文件夹中创建 WelcomeUserObserver.php 文件,并加入下面的代码:   <?php     namespace App\Observers;     class WelcomeUserObserver {       public function created($user){         Mail::send('emails.welcome', ['user' =>

Laravel 的 Events 及 Observers(四) 模型观察者

我同意,模型事件非常酷,然而,有时候,你需要一些更高级的东西. 当你使用 Laravel 的时候,你基本上就是在使用面向对象编程,你可能需要做一些与模型事件相同的事,那就是模型观察者 - 一个模型事件的高级版本. 要使用它,你需要做的就是像下面这样声明一个新的类(可以放在一个叫做 observers 的专用文件夹中):   class BookObserver {       public function creating($book)     {       // I want to cre

Laravel给生产环境添加监听事件(SQL日志监听)

本文主要给大家介绍的是关于Laravel给生产环境添加监听事件(SQL日志监听)的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: laravel版本:5.2.* 一.创建监听器 php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecuted or sudo /usr/local/bin/php artisan make:listener QueryListener

深入解析PHP的Laravel框架中的event事件操作_php技巧

 有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多加思考会发现有时候这些服务其实我们一直都见过.下面就事件.事件监听举一个很简单的例子你就会发现. ​ 这个例子是关于文章的浏览数的实现,当用户查看文章的时候文章的浏览数会增加1,用户查看文章就是一个事件,有了事件,就需要一个事件监听器,对监听的事件发生后执行相应的操作(文章浏览数加1),其实这种监

使用WebSphere Business Events REST接口从应用程序发出简单业务事件

简介 了解业务处理.更具灵敏性.近乎实时地监测管理和遵从性情况是不断增长的 企业业务线需求.基于事件的解决方案通过快速有效地利用机会和减少异常来支持业务和 IT 管理企业风险.当业务事件处理技术与业务线应用结合时,就创造了一个机会来构建解决方案 ,从而提供更多的灵活性并帮助检测关键遵从性和管理情况.事件支持即时发现机会和异常, 也可以发起适当的响应. IBM WebSphere Business Events(以下称为 Business Events)是一个复杂的事件处理引擎,有助于业务基于可操

Magento 中的事件

magento的事件机制就跟dural的hook机制一样,为了更好的扩展magento.magento里面的很多操作都是有事件派送的,比如产品的保存,删除,订单的保存,等等,很多很多. 如何在自己的程序中派送事件? 事件派送很简单,如以下代码 Java代码   Mage::dispatchEvent('checkout_onepage_controller_success_action', array('quote_item' => $item));   如何监听事件? 可以使用 Mage::a

Laravel构建即时应用的一种实现方法详解

即时交互的应用 大家应该都有所体会,在现代的 Web 应用中很多场景都需要运用到即时通讯,比如说最常见的支付回调,与三方登录.这些业务场景都基本需要遵循以下流程: 客户端触发相关业务,并产生第三方应用的操作(比如支付) 客户端等待服务端响应结果(用户完成第三方应用的操作) 第三方应用通知服务端处理结果(支付完成) 服务端通知客户端处理结果 客户端依据结果做出反馈 (跳转到支付成功页面) 在过去,为了实现这种即时通讯,能让客户端正确响应处理结果,最为常用的技术就是轮询,因为 HTTP 协议的单向性