zoukankan      html  css  js  c++  java
  • thinkphp6事件监听和触发多个事件

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

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

    创建一个事件类

     php think make:event User

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

    创建一个监听类

    php think make:listener User 

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

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

    use thinkfacadeEvent;
    
    
        public function hellolisten($name = 'ThinkPHP6')
        {
    
            echo '<br>hellolisten=' . $name;
            //监听类
            Event::listen('UserListener','applistenerUser'); //也可以写到配置文件 event.php 的listen 数组
            //触发监听事件
            Event::trigger('UserListener');
    
        }

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

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

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

    UserLogout.php

    <?php
    
    namespace applistener;
    
    class UserLogout
    {
        public function handle()
        {
            echo 'UserLogout监听';
        }
    }

    UserLogin.php

    <?php
    
    namespace applistener;
    
    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

  • 相关阅读:
    有关同时包含<winsock2.h>与<windows.h>头文件的问题
    如何使用微软提供的TCHAR.H头文件?
    下面的程序在VC6通过,在VS2008不能,错误信息都是“不能将参数……从const char[]转换为LPCWSTR”
    Android开发学习日志(四)
    爬虫开发(一)
    java集合源码详解
    Paxos算法
    linux 常用命令
    Bitmap的原理和应用
    Flink Checkpoint 问题排查实用指南
  • 原文地址:https://www.cnblogs.com/fps2tao/p/15153445.html
Copyright © 2011-2022 走看看