分享个简单易懂且非常有用的laravel事件
前言在开始本文的正文之前,我们先说一下在什么场景会使用这个事件功能。 事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的) 原来这个注册的方法也就10多行代码。但是有时候我们为了省事,直接在注册代码后面添加了各种代码。 例如这个注册方法本来是这样的use IlluminateHttpRequest;class UserController extends Controller } 现在有一个需求,要求注册之后给用户的邮箱发一个广告,绝大多数的人(也包括以前的我)就直接在这后面接着写代码了 use IlluminateHttpRequest;class UserController extends Controller //发送广告邮件 } 这是比较直观的写法,后来又有需求要发个短信。 use IlluminateHttpRequest;class UserController extends Controller //发送广告邮件 } 然后又有需求,要发IM消息,这样的需求很多。这些方法如果你封装了,可能也就一行代码。 但是,在实际项目中,这个注册方法里面已经加了很多东西。如果多人开发的话各种不方便。然后想到了laravel似乎有这个功能,但是一直都不知道怎么应用,仔细看了一下手册,发现和自己的想法不谋而合。 laravel的事件功能实际上更倾向是一种管理手段,并不是没了它我们就做不到了,只是它能让我们做得更加好,更加优雅。 laravel的事件是一种管理+实现的体现,它首先有一个总的目录,然后我们可以宏观的看到所有的事件,而不需要每次都要打开控制器的方法我们才能知道注册后会发生什么,这一点很重要,非常的方便,我就不按着laravel的顺序来讲,而是按着实际情况来建立这种关系。 现在我们无非就是要在注册之后要做一系列的事情,首先得注册完之后调用一个事件,然后这个事件再做各种各样的事 use IlluminateHttpRequest;//我们先引入一个事件类,名字自定义的,之后再一步一步创建 use AppEventsRegister; class UserController extends Controller } 找到appProvidersEventServiceProvider.php文件。给它添加关系,告诉系统,有人用 use LaravelLumenProvidersEventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider
namespace AppEvents; class Register public $uid; /**
namespace AppListeners; use AppEventsRegister; class SendHelpInformation implements ShouldQueue public function __construct() public function handle(Register $event) $user = User::find($uid); //......各种实现 这个handle方法就是我们要做的具体实现了,有个很方便的功能就是如果implements ShouldQueue这个接口的话就会异步队列执行,如果去掉的话就是同步执行。很方便有没有,这样代码就解耦了,不需要再管注册代码了,在这里就能很方便的管理了。多人开发也是单独写自己的Listeners就可以了。 具体的建议大家去看看手册吧,有些内容我这里就不完全说了。我只是抛砖引玉 总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |