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

我同意,模型事件非常酷,然而,有时候,你需要一些更高级的东西。

当你使用 Laravel 的时候,你基本上就是在使用面向对象编程,你可能需要做一些与模型事件相同的事,那就是模型观察者 — 一个模型事件的高级版本。

要使用它,你需要做的就是像下面这样声明一个新的类(可以放在一个叫做 observers 的专用文件夹中):

  class BookObserver {
 
    public function creating($book)
    {
      // I want to create the $book book, but first...
    }
 
      public function saving($book)
      {
          // I want to save the $book book, but first...
      }
 
      public function saved($book)
      {
          // I just saved the $book book, so....
      }
 
  }
然后在 EventServiceProvider 类的 boot() 方法中这样注册它:

  Book::observe(new BookObserver);
这个理的概念和前面都是相同的,没什么新的东西。通过观察者,你也可以使用前面模型事件中学到的每一个单独的概念。你可以声明任何你想要的方法,然后只需要使用事件标示符绑定一个特定的事件。因此,creating 事件是与 creating() 方法相关的,以此类推。

很明显,你可以在前置方法中终止该操作,比如说 createing() 和 updating() :

  class BookObserver {
 
    public function creating($book)
    {
      $somethingGoesWrong = true;
 
      if($somethingGoesWrong)
      {
        return false;
      }
    }
 
  }
好了,下面我们来看一些模型观察者的例子。

时间: 2024-10-03 16:35:54

Laravel 的 Events 及 Observers(四) 模型观察者的相关文章

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 模型事件学习笔记

首先我们来看看这个被称为 模型事件(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何时使用事件

什么是事件?如果你在谷歌中搜索这个词,你会得到多个结果.例如,它会被定义为已经发生或被视为发生的一些事:一次事故,尤其是特别重大的.它也可以定义为发生在一段特定时期内特定地点的事. 我喜欢这两个定义,因为它们与我们的内容很符合.事实上,在某种意义上,你可以把这段特定的时期看作模型的生命周期. 你可以创建一个新的实例,更新现有实例,或删除它.你可以做的每个操作都涉及到两个事件. 从基础上来说:我刚刚创建了一条记录,我删除了那条记录,我正在更新那条记录,听起来很自然,对吗? 在当模型的生命周期中,当

从社区的”二四模型“看社区建设

SNS的风潮方兴未艾,互联网的发展让新的产品层出不穷,Facebook出来时,我们大声惊呼"原来互联网还可以这么玩",显然Facebook开创了一个互联网社区的新时代,我们不得不承认,无论是twitter还是Tumblr,从中我们都可以看到Facebook的影子,delicious.linkedin.color等社区产品的出现让我们深深的感受到了互联网的创造性趣味,社区的价值越来越显现出来,于是各种类型的社区模式便一个个蹦了出来,那么什么样的社区价值更大呢?建立一个社区应该从哪方面考虑

浅析社区建设:从社区的“二四模型”看社区建设

中介交易 SEO诊断 淘宝客 云主机 技术大厅 SNS的风潮方兴未艾,互联网的发展让新的产品层出不穷,Facebook出来时,我们大声惊呼"原来互联网还可以这么玩",显然Facebook开创了一个互联网社区的新时代,我们不得不承认,无论是twitter还是Tumblr,从中我们都可以看到Facebook的影子,delicious.linkedin.color等社区产品的出现让我们深深的感受到了互联网的创造性趣味,社区的价值越来越显现出来,于是各种类型的社区模式便一个个蹦了出来,那么什么

Laravel 5 框架入门(四)完结篇_php实例

Page 和评论将使用 Eloquent 提供的"一对多关系".最终,我们将得到一个个人博客系统的雏形,并布置一个大作业,供大家实战练习. 1. 初识 Eloquent Laravel Eloquent ORM 是 Laravel 中非常重要的部分,也是 Laravel 能如此流行的原因之一.中文文档在: 1. http://laravel-china.org/docs/5.0/eloquent 2. http://www.golaravel.com/laravel/docs/5.0/

Laravel中数据迁移与数据填充的详细步骤

前言 这是一篇基础教程,对标 Laravel 文档中的数据迁移和数据填充,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍把. 关于Laravel数据库迁移的理解 最初看到laravel框架中迁移的时候,会以为这个迁移是把数据从一个数据库中迁到另一个数据库中,又或者是从一个服务器迁移到另一个服务器中.我自己学习有一个学习方法叫做顾名思义,所以所述是我的第一反应,但是学了以后发现这个迁移不是我理解中的迁移,但又不知道为什么叫做迁移,所以去百科查了一下. 迁移是指已经获得的知识.技能,甚

详解JavaScript中的客户端消息框架设计原理

  这篇文章主要介绍了详解JavaScript中的客户端消息框架设计原理,包括客户端和服务器端的通信等方面的内容,需要的朋友可以参考下 哇--是个危险的题目,对吗?我们对于什么是本质的理解当然会随着我们对要解决问题的理解而变化.因此我不会说谎--一年前我所理解的本质很不幸并不完整,因为我确信我将要写的已经快伴随我有6个月之久.所以,这篇文章是我在发现JavaScript中成功的运用客户端消息模式的一些关键要点时的一个掠影. 1.) 理解中介者与观察者的区别 大多数人在描述任何事件/消息机制的时候