<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 事件綁定與監聽 命令行生成事件類 php think make:event EventDemo 命令行生成事件監聽類php think make:listener ListenerDemo 事件類可作為保存與事件相關信息的容器,如沒有額外需求可以不需要定義 事件系統的所有操作都通過think\facade\Event類進行靜態調用 當定義事件類時 ```  // 在event.php中綁定事件標識 'bind' => [ 'EventDemo' => \app\event\EventDemo::class ], // 一個事件可以有很多不相關的監聽器 'listen' => [ 'EventDemo' => [ \app\listener\ListenerDemoA::class, \app\listener\ListenerDemoB::class ] ], ``` // 或者可以這樣動態綁定 ``` Event::bind(['EventDemo' => \app\event\EventDemo::class]); // 以下方式都可以觸發事件 Event::trigger('EventDemo'); Event::trigger(\app\event\EventDemo::class); Event::trigger(new \app\event\EventDemo('EventDemo 初始化')); 不定義事件類時 'bind' => [ ], 'listen' => [ 'EventDemo' => [ \app\listener\ListenerDemoA::class, \app\listener\ListenerDemoB::class ] ], ``` // 以下方式觸發事件 ``` Event::trigger('EventDemo'); ``` 此時就覺得bind比較多余,怎么說 ``` // 定義了事件類可以這樣綁定 'bind' => [ ], 'listen' => [ \app\event\EventDemo::class => [ \app\listener\ListenerDemoA::class, \app\listener\ListenerDemoB::class ] ] // 這樣就可以觸發事件 Event::trigger(\app\event\EventDemo::class); Event::trigger(new \app\event\EventDemo('EventDemo 初始化')); ``` // 這么看來bind的作用也只能體現在前面寫到的那樣了 # 事件訂閱 可以通過事件訂閱機制,在一個監聽器中監聽多個事件 命令行生成事件訂閱者類php think make:subscribe SubscribeDemo 訂閱者類其實就是監聽器的一個集合,在里面可以監聽多個事件 ``` <?php declare (strict_types = 1); namespace app\subscribe; use think\Event; use think\facade\Log; class SubscribeDemo { /** * 命名規范是on + 事件標識(駝峰命名) */ public function onEventInit($event) { // EventInit事件響應處理 Log::info('EventInit事件響應處理'); } public function eventEnd($event) { // EventEnd事件響應處理 Log::info('EventEnd事件響應處理'); } /** * 也可以通過subscribe方法來自定義事件標識注冊事件監聽器 */ public function subscribe(Event $event) { $event->listen('EventEnd',[$this,'eventEnd']); } } ``` 編寫好事件訂閱者類后在event.php中注冊事件訂閱者 ``` 'subscribe' => [ \app\subscribe\SubscribeDemo::class, // 更多事件訂閱 ], ``` 或者動態注冊 ``` Event::subscribe(\app\subscribe\SubscribeDemo::class); ``` 注冊后就可以通過以下方式觸發事件 ``` Event::trigger('EventInit'); // 通過助手函數 event('EventEnd'); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看