日韩在线观看-日韩在线成人-日韩在线不卡视频-日韩在线不卡视频-国产精品99-国产精品99

自定義事件

EasySwoole 中,可以通過 \EasySwoole\Component\Container 容器實現自定義事件功能。

使用示例

定義事件容器

新增 App\Event\Event.php 文件,內容如下:

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.bluecrab.cn
 * @document http://www.bluecrab.cn
 * @contact http://www.bluecrab.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;
        }
    }
}

注冊事件

在框架的 initialize 事件(即項目根目錄的 EasySwooleEvent.phpinitialize 函數)中進行注冊事件:

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.bluecrab.cn
 * @document http://www.bluecrab.cn
 * @contact http://www.bluecrab.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()
    {
        // 注冊事件
        \App\Event\Event::getInstance()->set('test', function () {
            echo 'this is test event!' . PHP_EOL;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

觸發事件

注冊事件之后,就可以在框架的任意位置觸發事件來進行調用,調用形式如下:

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

在控制器中觸發事件進行調用

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.bluecrab.cn
 * @document http://www.bluecrab.cn
 * @contact http://www.bluecrab.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()
    {
        // 觸發事件
        \App\Event\Event::getInstance()->hook('test');
    }
}

訪問 http://127.0.0.1:9501/ (示例請求地址)就可以看到終端顯示如下結果:this is test event!

主站蜘蛛池模板: 王盼盼| 陪我过个冬原唱歌词| 送元二使安西课堂笔记| 幸福花园在线观看| 小娥| 二年级上古诗26首打印| 爱 死亡和机器人| 爱欲1990未删减版播放| 红灯停绿灯行电影观看| 常乐镇| 高地1—36集电视剧免费观看剧情| 新红楼梦电影| 吉泽明步 番号| 红灯区观看| 吻胸摸激情床激烈视频| 韩国一对一电影| 二次元炫酷帅气壁纸| av午夜| 春娇与志明电影| 《密爱》| 安徽农金存款利率2024最新消息 | 抖音在线观看| 张俪作品| 各各他的爱的歌谱| 夫妻性生活视屏| 白宝山末路1997电视剧免费版| 西游记续集演员表| doors2怪物图鉴| 成龙电影全集大全| 吴京电影大全| 少先队应知应会知识题库及答案| 39天 电影| 三年片最新电影免费观看多人互换| 情满四合院46集免费播放电视剧| 美女写真视频网站| 赖小子在线观看完整视频高清| 北风那个吹在线观看免费完整版| 霹雳火 电影| 曾生| 大奉打更人电视剧在线观看全集免费播放 | 电影《追求》|