国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Yii2事件示例解析

tuniutech / 2245人閱讀

摘要:事件可以將自定義代碼注入到現有代碼中的特定執行點。在處理復雜任務時,事件能很好地起到解耦的作用。

事件可以將自定義代碼“注入”到現有代碼中的特定執行點。 附加自定義代碼到某個事件,當這個事件被觸發時,這些代碼就會自動執行。

在處理復雜任務時,事件能很好地起到解耦的作用。事件相對于硬編碼的方式來說也增加了服務器資源開銷,所以比較建議在任務較為復雜時使用事件!

以下是實例代碼,代碼中有詳細注釋:

控制器
registerEventHandler();
    }

    /**
     * 事件注冊
     */
    private function registerEventHandler(){
        //事件處理類
        $msgHandler = new MsgHandler();
        //綁定事件時,可以傳入第三個參數。該參數值將會保存到Event類的data屬性中
        $this->on(self::BEFORE_SEND,[$msgHandler,"beforeSendMsg"],"who");
        $this->on(self::AFTER_SEND,[$msgHandler,"afterSendMsg"]);
    }

    /**
     * 測試用的方法
     */
    public function actionIndex(){
        //發送信息前的事件類
        $msgBefore = new MsgBeforeEvent();
        $msgBefore->date = date("Y-m-d H:i:s",time());
        //觸發發送信息前的事件,傳入事件類的實例對象,這里的對象充當了保存臨時數據的角色
        $this->trigger(self::BEFORE_SEND,$msgBefore);
        //假設這里是個較為復雜的任務
        echo "發送信息...
";
        //任務執行完畢后,調用發送信息后的事件
        $msgAfter = new MsgAfterEvent();
        $msgAfter->from = "Jack";
        $msgAfter->to = "Lucy";
        $msgAfter->message = "Awesome";
        //觸發發送信息后的事件
        $this->trigger(self::AFTER_SEND,$msgAfter);
    }
}
事件處理類

個人覺得可以直接放在models目錄下,如果不需要用到數據庫操作,可以考慮直接繼承Model

date.",extraMsg:".$event->data."
";
        //寫入文件中
        file_put_contents("log.txt",$logContent,FILE_APPEND);
    }

    /**
     * 處理發送信息后的事件
     * @param MsgAfterEvent $event
     */
    public function afterSendMsg(MsgAfterEvent $event){
        /**
         * 從event中讀取數據
         */
        $logContent = "AFTER!".$event->from."發送給".$event->to.",內容如下:".$event->message."
";
        file_put_contents("log.txt",$logContent,FILE_APPEND);
    }
}

消息發送前的事件類

可以放到models目錄下


消息發送后的事件類

可以放到models目錄下


處理結果

運行控制器中的index方法后,在log.txt文件中得到如下結果

BEFORE:2017-11-08 14:10:07,extraMsg:who
AFTER!Jack發送給Lucy,內容如下:Awesome

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26044.html

相關文章

  • 淺析Yii2.0的事件Event

    摘要:全局級別利用實例在整個應用的生命周期中全局可訪問的特性,來實現這個全局事件的。類級別通過維護類的屬性數組,觸發事件時通過類名和事件名稱取到當前類以及父類的數據,再通過函數觸發。 概念理解:在某一個事件(trigger)發生的時候,觸發預先設定(on)的代碼,這是代碼解耦的一種方式。 事件按照級別分為三類 1. 實例級別 綁定事件、觸發事件的類繼承的是Component,只在當前示例中運...

    李義 評論0 收藏0
  • yii2框架中的di容器源碼中了解反射的作用

    摘要:反射簡介參考官方簡介的話,具有完整的反射,添加了對類接口函數方法和擴展進行反向工程的能力。此外,反射提供了方法來取出函數類和方法中的文檔注釋。 反射簡介 參考官方簡介的話,PHP 5 具有完整的反射 API,添加了對類、接口、函數、方法和擴展進行反向工程的能力。 此外,反射 API 提供了方法來取出函數、類和方法中的文檔注釋。 YII2框架中示例 對于yii2框架,應該都知道di容器,...

    dantezhao 評論0 收藏0
  • Yii修行之路 - Extension 擴展

    摘要:運行來安裝指定的擴展。這更便于用戶辨別是否是的擴展。當用戶運行安裝一個擴展時,文件會被自動更新使之包含新擴展的信息。上述代碼表明該擴展依賴于包。例如,上述的條目聲明將對應于別名。為達到這個目的,你應當在公開發布前做測試。 簡述 擴展是專門設計的在 Yii 應用中隨時可拿來使用的, 并可重發布的軟件包。 基礎 例如, yiisoft/yii2-debug 擴展在你的應用的每個頁面底部添加...

    bovenson 評論0 收藏0
  • Yii2 框架核心概念之組件(手冊翻譯)

    摘要:可以在方法里實現例行檢查和屬性正?;瘷z查對象方法調用開始的三個階段都在構造函數里實現,這意味著當你得到一個對象的實例時,它已經被初始化為適當的狀態,可以被放心的使用。 組件 組件是YII框架application(應用)的主要組成部分,它是 [yiiaseComponent]的實例或者子類。組件有三個重要特征(功能): 屬性(properties) 事件(events) 行為(...

    nemo 評論0 收藏0
  • 再看Yii2

    摘要:之前有兩篇文章寫了一些關于的和的,現在來全局性地看一看相對于到底有哪些改善。先說安裝方法,在中已經使用來管理各種依賴關系,你在安裝的時候完全可以用來進行安裝,而且,還支持兩個不同的安裝版和。 之前有兩篇文章寫了一些關于Yii 2.0的MVC和Yii 2.0的Actived Record,現在來全局性地看一看Yii 2.0相對于Yii 1.1到底有哪些改善。個人總結有一下幾個: 1.Y...

    waruqi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<