当前位置: 首页 > 后端技术 > PHP

ThinkPHP6事件基本使用

时间:2023-03-29 19:54:35 PHP

一、前言TP6文档非常简洁,很多内容都没有给出完整的例子。活动内容也是如此,对新手不是很友好。二、博客浏览示例(一)前期准备:1、定义路由Route::get('blogs/:id','Blogs/read');2.使用命令phpthinkmake:controllerBlogs3创建控制器。使用命令phpthinkmake:modelBlog4创建一个模型。创建一个think_blog表CREATETABLE`think_blog`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`title`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,`views`int(11)NOTNULLDEFAULT'0',PRIMARYKEY(`id`))ENGINE=MyISAMAUTO_INCREMENT=4DEFAULTCHARSET=utf8mb4;表格如下:5.ModelandControllerCodeBlogsControlController,引入Blog模型类并定义读取方法:isEmpty()){returnJsonResponseHandler::error('博客不存在');}$data=['title'=>$blog->title,'content'=>$blog->content,'views'=>$blog->views];returnJsonResponseHandler::succ('查询成功',$data);}}博客模型代码:blog=$blog;}}2.绑定事件在应用的event.php事件定义文件中批量绑定event.php文件在app目录下,绑定事件的代码如下:['BlogView'=>'app\event\BlogView',],'listen'=>['AppInit'=>[],'HttpRun'=>[],'HttpEnd'=>[],'LogLevel'=>[],'LogWrite'=>[],],'订阅'=>[],];3.事件监听使用命令行生成事件监听类:phpthinkmake:listenerBlogView定义事件监听处理blog;$id=$blog->id;$views=$blog->views;$blog::update(['views'=>$views+1],['id'=>$id]);}}4。绑定监听在之前提到过绑定到event.php文件,具体代码如下:['BlogView'=>'app\event\BlogView',],'listen'=>['AppInit'=>[],'HttpRun'=>[],'HttpEnd'=>[],'LogLevel'=>[],'LogWrite'=>[],//绑定监听器'BlogView'=>['app\listener\BlogView'],],'订阅'=>[],];5.触发事件当用户浏览博客时,浏览量会增加1,所以触发时机要定义在Blogscontroller中的read方法中,注意看注释:isEmpty()){returnJsonResponseHandler::error('博客不存在');}//触发事件event(newBlogView($blog));$data=['title'=>$blog->title,'content'=>$blog->content,'views'=>$blog->views];返回JsonResponseHandler::succ('查询成功',$数据);}}6.测试查询前,id为3的文章的浏览量为零。query查询后,参考资料TP6document-event