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

  • 相关阅读:
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    Ubuntu更换python默认版本
    Ubuntu pip版本的安装,卸载,查看,更新
    android底部导航栏小结
    jdk核心库中使用到的设计模式
    行为型-责任链模式(Chain of Responsibility)
    行为型-访问者模式(Visitor)
    结构型-迭代器模式(Adapter)
    行为型-观察者模式(Observer)
    设计模式-模式目录
  • 原文地址:https://www.cnblogs.com/fps2tao/p/15153445.html
Copyright © 2011-2022 走看看