资讯专栏INFORMATION COLUMN

最简单易懂的laravel事件,这个功能非常的有用

MartinHan / 752人阅读

摘要:先说一下在什么场景会使用这个事件功能。的事件功能实际上更倾向是一种管理手段,并不是没了它我们就做不到了,只是它能让我们做得更加好,更加优雅。然后去目录创建各种要做的事件监听类。

先说一下在什么场景会使用这个事件功能。

事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的)

原来这个注册的方法也就10多行代码。但是有时候我们为了省事,直接在注册代码后面添加了各种代码。

例如这个注册方法本来是这样的


现在有一个需求,要求注册之后给用户的邮箱发一个广告,绝大多数的人(也包括以前的我)就直接在这后面接着写代码了


这是比较直观的写法,后来又有需求要发个短信。


然后又有需求,要发IM消息,这样的需求很多。这些方法如果你封装了,可能也就一行代码。

但是,在实际项目中,这个注册方法里面已经加了很多东西。如果多人开发的话各种不方便。然后想到了laravel似乎有这个功能,但是一直都不知道怎么应用,仔细看了一下手册,发现和自己的想法不谋而合。

laravel的事件功能实际上更倾向是一种管理手段,并不是没了它我们就做不到了,只是它能让我们做得更加好,更加优雅。

laravel的事件是一种管理+实现的体现,它首先有一个总的目录,然后我们可以宏观的看到所有的事件,而不需要每次都要打开控制器的方法我们才能知道注册后会发生什么,这一点很重要,非常的方便,我就不按着laravel的顺序来讲,而是按着实际情况来建立这种关系。

现在我们无非就是要在注册之后要做一系列的事情,首先得注册完之后调用一个事件,然后这个事件再做各种各样的事


找到appProvidersEventServiceProvider.php文件。给它添加关系,告诉系统,有人用event()调用了事件之后要被谁监听得到。

 [
            // 发送广告邮件
            "AppListenersSendAdMail",
            // 发送短信
            "AppListenersSendSms",
            // 发送帮助信息
            "AppListenersSendHelpInformation",

        ],
    ];
}

这里是注册事件的入口,相当于一个总目录,这样就可以跟注册代码解耦了,以后要加东西我们就不需要再去看注册方法的代码了

现在注册完之后会触发这个AppEventsRegister类,然后这个类会被AppListenersSendAdMail,AppListenersSendSmsAppListenersSendHelpInformation监听得到,我们进入appEvents目录,创建Register这个类

uid = $uid;
    }
}

这样就可以了。

然后去appListeners目录创建各种要做的事件监听类。

uid;
        
        $user = User::find($uid);
        
        //......各种实现
    }
}

这个handle方法就是我们要做的具体实现了,有个很方便的功能就是如果implements ShouldQueue这个接口的话就会异步队列执行,如果去掉的话就是同步执行。很方便有没有,这样代码就解耦了,不需要再管注册代码了,在这里就能很方便的管理了。多人开发也是多带带写自己的Listeners就可以了。

具体的建议大家去看看手册吧,有些内容我这里就不完全说了。我只是抛砖引玉

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25669.html

相关文章

  • Laravel 工具包推荐--角色/权限管理】

    摘要:在大多数的开发中,角色和权限的管理都是非常重要的一部分。上关于角色和权限管理的包有很多,今天就为大家介绍几个好用的包。缓存在中,为了提高应用的性能,或自动的存储角色和权限数据。 showImg(https://segmentfault.com/img/bVTEb3?w=2200&h=1125); 在大多数的web开发中,角色和权限的管理都是非常重要的一部分。Laravel上关于角色和权...

    xiaoxiaozi 评论0 收藏0
  • 无头浏览器测试可视化:Laravel Dusk 控制台入门指南

    摘要:通过添加此功能,该程序包将启用记录请求和响应信息所需的功能。是一条普通控制器路由,用于输出控制台的视图。收集浏览器行为这是整个扩展包最乏味的部分。 Laravel Dusk 控制台是一款 Laravel 扩展包,能够为你的 Dusk 测试套件提供漂亮的可视面板。通过它,你可以可视化运行 Dusk 测试时涉及的各个步骤,以及查看每个步骤的 DOM 快照。这对于调试浏览器测试、并搞清楚后台...

    levius 评论0 收藏0
  • 人人必备10个 Laravel 4 扩展包

    摘要:更多扩展包中有丰富的扩展包来帮你完成几乎任何你想实现的功能。我们不能把所有的扩展包都整理出来,然而,这里还是列出了一些很有用的。总之,你几乎总是能够找到一个扩展包可以解决你当前的问题。 Laravel 是一个非常流行且简单易用的PHP框架,它提供了很多基础的工具(如 RESTful 路由、内置的ORM、模版等)使你能够快速的创建应用。这意味着你可以花费更少的时间来建立应用程序的模版,给...

    darkbug 评论0 收藏0
  • laravel实现简单用户权限

    摘要:设计判断是否有某个权限是一个二维数组全局设置在数据库中,我将二维数组存储为,利用的的和方法,完成了数据库中和外界程序逻辑的连接。 关于权限管理的思考最近用laravel设计后台,后台需要有个权限管理。权限管理实质上分为两个部分,首先是认证,然后是权限。认证部分非常好做,就是管理员登录,记录session。这个laravel中也有自带Auth来实现这个。最麻烦就是权限认证。 权限认证本质...

    goji 评论0 收藏0
  • 使用Laravel事件保持代码清洁

    摘要:事件类负责序列化传入数据,并将其传递给侦听器,旨在在事件触发后处理逻辑的内容。当绑定准备就绪时,我们可以使用生成一对事件侦听器,或者我们可以使用命令单独创建它们。我们的事件没有其他责任,只是将用户指定为公共财产,可能会传递给侦听器。 在许多情况下,当我们的应用程序变得更大,并且需要处理越来越多的任务时,我们的控制器,演示者或服务的大小可以快速增加,并且很容易变得难以处理,无法测试和缓慢...

    crossea 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<