国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman Event事件是否增加返回值 + has函數(shù)

meystack

看到Event事件插件沒有返回鉤子return的數(shù)據(jù),并且也沒有檢查鉤子是否存在的函數(shù),
在自己項目中像下面這樣簡單修改了下,并且也提交了ISSUES,但是未得到回復(fù),

這兩個功能使用的還是比較頻繁的,所以請問下,Event是否會更新和融合進內(nèi)核!

按照workerman一貫的做法,雖然追求簡單就是多,可有些web常用,比如事件、路由這些,
代碼量不多的情況下,感覺還是融合一體比較好!要不然一個項目里面加載的包,,太多!

    /**
     * @param $event_name
     * @param $data
     * @return
     */
    public static function emit($event_name, $data, $once = false)
    {
        $success_count = 0;
        $callbacks = static::$eventMap[$event_name]??[];
        foreach (static::$prefixEventMap as $name => $callback_items) {
            if (strpos($event_name, $name) === 0) {
                $callbacks = array_merge($callbacks, $callback_items);
            }
        }
        ksort($callbacks);
        $ret = [];
        foreach ($callbacks as $callback) {
            try {
                $ret[$event_name] = $callback($data, $event_name);
                $success_count++;
            } catch (\Throwable $e) {
                if (!static::$logger && is_callable('\support\Log::error')) {
                    static::$logger = Log::channel();
                }
                if (static::$logger) {
                    static::$logger->error($e);
                }
                continue;
            }
        }
        // 鉤子事件返回數(shù)據(jù)是常用的
        if ($once && isset($ret[$event_name])) {
            return $ret[$event_name];
        }

        return $ret;
    }

    /**
     * @return array
     */
    public static function list(): array
    {
        $callbacks = [];
        foreach (static::$eventMap as $event_name => $callback_items) {
            foreach ($callback_items as $id => $callback_item) {
                $callbacks[$id] = [$event_name, $callback_item];
            }
        }
        foreach (static::$prefixEventMap as $event_name => $callback_items) {
            foreach ($callback_items as $id => $callback_item) {
                $callbacks[$id] = [$event_name.'*', $callback_item];
            }
        }
        ksort($callbacks);
        return $callbacks;
    }

    /**
     * @param string $name
     * @return void
     */
    public static function has(string $name)
    {
        $list = static::list();
        // 檢查是否存在鉤子也有必要
        foreach ($list as $index => $item) {
            if ($item[0] == trim($name)) {
                return true;
            }
        }

        return false;
    }
1238 1 0
1個回答

walkor 打賞

主干已經(jīng)添加 hasListener 方法,試下是否ok,ok的話先發(fā)個版本。Event 是否加入內(nèi)核待定

  • meystack 2022-08-14

    好的,等會去測試下,剛看了代碼,測試完后再提交個ISSUE

  • meystack 2022-08-14

    提交了一個新的issue,大佬有空查看下!

年代過于久遠,無法發(fā)表回答
??