中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

自定義事件

EasySwoole 中,可以通過(guò) \EasySwoole\Component\Container 容器實(shí)現(xiàn)自定義事件功能。

使用示例

定義事件容器

新增 App\Event\Event.php 文件,內(nèi)容如下:

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.jrrswxmm.cn
 * @document http://www.jrrswxmm.cn
 * @contact http://www.jrrswxmm.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

namespace App\Event;

use EasySwoole\Component\Container;
use EasySwoole\Component\Singleton;

class Event extends Container
{
    use Singleton;

    public function set($key, $item)
    {
        if (is_callable($item)) {
            return parent::set($key, $item);
        } else {
            return false;
        }
    }

    public function hook($event, ...$args)
    {
        $call = $this->get($event);
        if (is_callable($call)) {
            return call_user_func($call, ...$args);
        } else {
            return null;
        }
    }
}

注冊(cè)事件

在框架的 initialize 事件(即項(xiàng)目根目錄的 EasySwooleEvent.phpinitialize 函數(shù))中進(jìn)行注冊(cè)事件:

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.jrrswxmm.cn
 * @document http://www.jrrswxmm.cn
 * @contact http://www.jrrswxmm.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        // 注冊(cè)事件
        \App\Event\Event::getInstance()->set('test', function () {
            echo 'this is test event!' . PHP_EOL;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

觸發(fā)事件

注冊(cè)事件之后,就可以在框架的任意位置觸發(fā)事件來(lái)進(jìn)行調(diào)用,調(diào)用形式如下:

<?php
\App\Event\Event::getInstance()->hook('test');

在控制器中觸發(fā)事件進(jìn)行調(diào)用

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.jrrswxmm.cn
 * @document http://www.jrrswxmm.cn
 * @contact http://www.jrrswxmm.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;

class Index extends Controller
{
    public function index()
    {
        // 觸發(fā)事件
        \App\Event\Event::getInstance()->hook('test');
    }
}

訪問(wèn) http://127.0.0.1:9501/ (示例請(qǐng)求地址)就可以看到終端顯示如下結(jié)果:this is test event!。

主站蜘蛛池模板: 国产精品久久久久久久7电影 | 美日韩视频 | 色综合久 | 久久久久久久久久久亚洲 | 精品国产91久久 | 久热亚洲| 欧美3区| 国内毛片 | 懂色一区二区三区av片 | 日韩欧美在线不卡 | 成人国产在线 | 精品福利一区二区三区 | 99亚洲| 成人中文字幕在线观看 | 久久久网站 | 毛片在线播放网站 | 精品一二区 | 自拍偷拍 亚洲 | 精品久久亚洲 | 久久精品国产99国产 | 日韩欧美一区二区三区免费观看 | 欧美视频第一页 | 日韩一区中文字幕 | 日本一区二区三区精品视频 | 亚洲精品日韩在线 | 色婷婷亚洲一区二区三区 | 91国内外精品自在线播放 | 久久午夜羞羞影院免费观看 | 日本不卡一区二区三区 | 亚洲+变态+欧美+另类+精品 | 91精品国产综合久久久久 | 91精品视频在线播放 | 久久国产精品一区 | 中文字幕久久精品 | 亚洲精品99 | 成人欧美一区二区三区在线播放 | 亚洲美女久久久 | 国产精品永久免费自在线观看 | 亚洲成人一区二区三区 | 一区二区三区四区在线 | 国产视频第一页 |