本文为大家带来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类,或者你可以指定完整类名生成。
<?php namespace app\subscribe; class User { public function onUserLogin($user) { // UserLogin事件响应处理 } public function onUserLogout($user) { // UserLogout事件响应处理 } }
3.自定义订阅
如果希望自定义订阅方式(或者方法规范),可以定义subscribe方法实现。
<?php namespace app\subscribe; use think\Event; class User { public function onUserLogin($user) { // UserLogin事件响应处理 } public function onUserLogout($user) { // UserLogout事件响应处理 } public function subscribe(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');
1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!