完全掌握thinkphp的事件绑定、监听和订阅

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了事件绑定、监听、订阅的相关问题,事件相比较中间件的优势是事件比中间件更加精准定位,下面一起来看一下,希望对大家有帮…

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了事件绑定、监听、订阅的相关问题,事件相比较中间件的优势是事件比中间件更加精准定位,下面一起来看一下,希望对大家有帮助。

完全掌握thinkphp的事件绑定、监听和订阅

事件是什么

事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,还能完成业务的需求。

TP6中事件的使用

官网的解释,没有实例,这里简单的告诉大家如何使用,会使用之后再去发现更多操作

1.事件监听

命令行生成监听php think make:listener UserLogin

一般建议直接在事件定义文件(event.php)中定义对应事件的监听。

return['bind'=>['UserLogin'=>'app\event\UserLogin',//更多事件绑定],'listen'=>['UserLogin'=>['app\listener\UserLogin'],//更多事件监听],];

2.事件订阅

命令行php think make:subscribe User

默认会生成app\subscribe\User类,或者你可以指定完整类名生成。

<?phpnamespaceapp\subscribe;classUser{publicfunctiononUserLogin($user){//UserLogin事件响应处理}publicfunctiononUserLogout($user){//UserLogout事件响应处理}}

3.自定义订阅

如果希望自定义订阅方式(或者方法规范),可以定义subscribe方法实现。

<?phpnamespaceapp\subscribe;usethink\Event;classUser{publicfunctiononUserLogin($user){//UserLogin事件响应处理}publicfunctiononUserLogout($user){//UserLogout事件响应处理}publicfunctionsubscribe(Event$event){$event->listen('UserLogin',[$this,'onUserLogin']);$event->listen('UserLogout',[$this,'onUserLogout']);}}

然后在事件定义文件注册事件订阅者

return['bind'=>['UserLogin'=>'app\event\UserLogin',//更多事件绑定],'listen'=>['UserLogin'=>['app\listener\UserLogin'],//更多事件监听],'subscribe'=>['app\subscribe\User',//更多事件订阅],];

事件触发

//触发UserLogin事件用于执行用户登录后的一系列操作Event::trigger('UserLogin');或者使用助手函数event('UserLogin');

产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;

日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉

本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;

部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入

如若转载,请注明出处:https://www.chanpinyuan.cn/30015.html;
(0)
上一篇 2022年12月17日 下午4:17
下一篇 2022年12月17日 下午4:17

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部