ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

thinkphp6事件监听和触发多个事件

2021-08-17 18:03:00  阅读:352  来源: 互联网

标签:触发 监听 thinkphp6 事件 php event Event


 

thinkphp6事件订阅,监听多个事件

    • 创建一个事件类
    • 创建一个监听类
    • 修改配置文件确定触发事件

 

创建一个事件类

 php think make:event User

<?php

namespace app\event;

class User
{
    public function __construct()
    {
        echo '<br>我是用户的登陆事件构造函数<br>';
    }
    
    public function login_event()
    {
        echo '我是login_event<br>';
    }
}

 

 

创建一个监听类

php think make:listener User 

 

<?php

namespace app\listener;

class User
{
    //依赖注入的方法
    public function handle(\app\event\User $event)
    {
        echo 'listener监听得到:' . $event->login_event() . '<br>';
    }
}

控制器中调用监听事件并触发

use think\facade\Event;


    public function hellolisten($name = 'ThinkPHP6')
    {

        echo '<br>hellolisten=' . $name;
        //监听类
        Event::listen('UserListener','app\listener\User'); //也可以写到配置文件 event.php 的listen 数组
        //触发监听事件
        Event::trigger('UserListener');

    }

修改配置文件确定触发事件

修改event.php 配置文件,增加监听事件

创建两个监听类,如下图:

 

UserLogout.php

<?php

namespace app\listener;

class UserLogout
{
    public function handle()
    {
        echo 'UserLogout监听';
    }
}

 

UserLogin.php

<?php

namespace app\listener;

class UserLogin
{
    public function handle()
    {
        echo 'UserLogin监听';
    }
}

 

 

确定触发事件的地方,这里为index控制器hellolisten方法

    public function hellolisten($name = 'ThinkPHP6')
    {
        echo "开始位置<br>";
        //直接使用事件类触发
        Event::trigger('UserLogin');
        Event::trigger('UserLogout');
        echo "<br>结束位置<br>";
    }

 

 

 

 

 

转 : https://blog.csdn.net/guo_qiangqiang/article/details/114789465

参考 : 

https://www.kancloud.cn/manual/thinkphp6_0/1037492

https://www.kancloud.cn/cyuemcz/xiaobai/1059791

标签:触发,监听,thinkphp6,事件,php,event,Event
来源: https://www.cnblogs.com/fps2tao/p/15153445.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有