symfony3 - 基于laravel开发的Flarum论坛,源代码里面的GroupWillBeSaved事件有什么用?

查看:188
本文介绍了symfony3 - 基于laravel开发的Flarum论坛,源代码里面的GroupWillBeSaved事件有什么用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

基于 laravel 开发的 Flarum 论坛,源代码里面的 GroupWillBeSaved 事件有什么用?


        $this->events->fire(
            new GroupWillBeSaved($group, $actor, $data)
        );

https://github.com/flarum/core/blob/master/src/Core/Command/EditGroupHandler.php

1)event 和 listener 配对使用, GroupWillBeSaved 事件对应的 listener 在哪儿呢?

2)events->fire(new GroupWillBeSaved($group, $actor, $data)); 执行流程是怎么样的?

解决方案

居然有人在 segmentfault 提问关于 Flarum 的问题。

我是 Flarum 中文社区 的维护者,目前的主要工作是中文语言包以及文档汉化。也稍微读过一些 Flarum 源码。

很高兴你对 Flarum 感兴趣,也欢迎加入 Flarum 中文社区来贡献力量。


这个是典型的 Pub/Sub 模式,作用是为了给系统解耦和灵活的扩展性。

第一个问题,可以搜索 GroupWillBeSaved,https://github.com/flarum/core/search?utf8=%E2%9C%93&q=GroupWillBeSaved

可以找到 3 个结果。一个是定义 GroupWillBeSaved,另外两个是触发 GroupWillBeSaved

GroupWillBeSaved 事件对应的 listener 在哪儿呢?

GroupWillBeSaved 事件根本就没有对应的 Listener。

那为什么这么设计呢?

因为 Flarum 的目标是开发一个微内核,其他功能可以通过扩展来实现,当我们扩展 Flarum 内核时,就需要监听不同的事件,同理,Flarum 会在运行过程中 fire 各种事件。虽然 Flarum 内核不处理所有这些事件,但是我们开发扩展时,可以处理我们感兴趣的事件。

大部分系统都会在执行的时候挂载各种 hook,而 Flarum 的 Pub/Sub 模式显然更加利于扩展。

这篇关于symfony3 - 基于laravel开发的Flarum论坛,源代码里面的GroupWillBeSaved事件有什么用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆