亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

自定義事件

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

使用示例

定義事件容器

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

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.b3f21.cn
 * @document http://www.b3f21.cn
 * @contact http://www.b3f21.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 函數(shù))中進行注冊事件:

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

    }
}

觸發(fā)事件

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

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

在控制器中觸發(fā)事件進行調用

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

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

主站蜘蛛池模板: 国产免费看片 | 特大色一区 | 欧美久久久精品 | av大片免费在线观看 | 91精品国产99久久久 | 网站国产 | 青草精品在线 | 91精品国产高清91久 | 四虎官网| 曰韩av| 爱搞逼综合网 | 国产精品1区二区 | 成年人视频在线播放 | 亚洲欧美自拍另类 | 91久久国产精品 | 这里只有精品久久 | 91久久精品国产 | 欧美成人精品一区二区三区 | 宅男av| 午夜国产一区二区三区四区 | 日韩一区二区三区在线看 | 国内外一级毛片 | 精品一区二区免费视频 | 国产区视频 | 二区中文字幕 | 国产一区二区精彩视频 | 亚洲三级电影在线 | 色本道| 免费一区区三区四区 | 朋友妈妈2017 | 成人性生交大片免费10分 | 伊人色爱| 四虎影视在线播放 | 5个黑人躁我一个爽 | 天天做天天爱夜夜爽毛片app | 色婷婷婷婷 | 黑人做爰全过程免费的视频播放 | 亚洲精品在线观看av | 一本久久道 | 狠狠色狠狠色 | 伊人久久艹 |