Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel 的 Events 及 Observers(二)

Laravel 的 Events 及 Observers(二)

WBOY
WBOYOriginal
2016-06-23 13:08:51998Durchsuche

首先我们来看看这个被称为 模型事件(model events)的技术。它的基本概念非常简单:

  • 在  EventServiceProvider中你可以添加一个特定的事件监听器,并绑定一个闭包函数
  • 在闭包函数中,你不需要接触模型代码就可以添加新的行为
  • 绑定操作必须放在类的  boot()方法中

这是一个把创建 ( created) 用户事件与闭包函数进行绑定的简单示例。闭包的 $user参数包含了指定用户的实例:

public function boot(DispatcherContract $events)  {      parent::boot($events);      User::created(function($user)      {          // doing something here, after User creation...      });  }

正如你想象的,每一个模型都有这些方法,所以,如果你想为 saved事件绑定一个操作的话,你必须:

User::saved(function($user)    {        // doing something here, after User save operation (both create and update)...    });

另外一个有趣的功能是可以通过预方法停止当前操作。事实上,你可能会用到下面的方法:

  • creating
  • updating
  • saving
  • restoring
  • deleting

如果你想退出操作的话,可以返回一个布尔类型的 false值。

假设用户邮箱以 @deniedprovider.com 结尾的话,我们就退出 create操作,可以这么做:

User::creating(function($user)    {      if(ends_with($user->email, '@deniedprovider.com'))      {        return false;      }    });

很明显,对于 created, updated, saved, restored, 和 deleted事件则不能这么做,这些事件已经发生了,不能返回。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn