搜尋

首頁  >  問答  >  主體

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

PHP中文网PHP中文网2821 天前740

全部回覆(1)我來回復

  • PHPz

    PHPz2017-05-16 16:54:29

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

    回覆
    0
  • 取消回覆