symfony3 - 基於laravel開發的Flarum論壇,原始碼裡面的GroupWillBeSaved事件有什麼用?
PHP中文网
PHP中文网 2017-05-16 16:52:29
0
1
702

基於 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)); 執行流程是怎麼樣的?

PHP中文网
PHP中文网

认证0级讲师

全部回覆(1)
PHPzhong

居然有人在 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 模式顯然更有利於擴充。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板