<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 模型擴展 [上一頁](# "上一頁")[下一頁](# "下一頁") 模型擴展目錄位于Extend/Model下面,ThinkPHP本身提供了豐富的模型擴展,例如: | 模型名 | 名稱 | 說明 | |-----|-----|-----| | AdvModel | 高級模型 | 擴展了文本字段、只讀字段、序列化字段、延遲寫入、樂觀鎖等高級特性 | | ViewModel | 視圖模型 | 擴展了模型的視圖操作功能 | | RelationModel | 關聯模型 | 擴展了模型的關聯操作 | | MongoModel | Mongo模型 | 擴展了對Mongo數據庫的數據操作支持 | 這些擴展模型都是基于系統的基礎模型類Model擴展而來。 ### 模型擴展接口 ThinkPHP的新版基礎模型類Model具有很好的擴展性,對模型的CURD方法都提供了擴展接口,包含: | 接口名稱 | 所屬方法 | 接口方法(參數) | |-----|-----|-----| | 初始化接口 | 全局 | _initialize() | | 表達式過濾接口 | 全局 | _options_filter(&$options) | | 寫入前置接口 | add方法 | _before_insert(&$data,$options) | | 寫入后置接口 | add方法 | _after_insert($data,$options) | | 更新前置接口 | save方法 | _before_update(&$data,$options) | | 更新后置接口 | save方法 | _after_update($data,$options) | | 數據寫入接口 | add、save方法 | _facade($data) | | 數據庫切換接口 | db方法 | _after_db() | | 刪除后置接口 | delete方法 | _after_delete($data,$options) | | 查詢后置接口 | select方法 | _after_select(&$result,$options) | | 查詢后置接口 | find方法 | _after_find(&$result,$options) | 目前提供的的擴展模型包括:高級模型(AdvModel)、視圖模型(ViewModel)、關聯模型(RelationModel)和Mongo模型都是繼承Model類并且都通過了擴展完成了很多其他的功能。 不過在某些情況下,模型擴展并不一定要繼承基礎模型Model。 ### 調用擴展模型 定義了模型擴展之后,有多種方式可以使用擴展模型: **一、繼承擴展模型** 最普遍的用法就是項目中的自定義模型或者公共模型直接繼承擴展模型,例如: 我們需要使用Mongo模型的話,可以:`Class?UserModel?extends?MongoModel{}`把原來的繼承從Model類改為擴展模型MongoModel,就可以使用MongoModel的所有功能。 如果你的項目大部分模型都繼承了一個公共的模型類CommonModel的話,只需要改下CommonModel的繼承定義:`Class?CommonModel?extends?MongoModel{}`所有繼承自CommonModel的自定義模型也可以使用MongoModel的功能。**二、使用動態模型切換的方式** 例如,我們定義了一個UserModel如下:`Class?UserModel?extends?Model{}`為了使用AdvModel高級模型的功能,我們使用下面的方式切換到高級模型進行操作:`$User->switchModel("Adv")->top10();`注意:動態模型切換方法switchModel調用的時候無需寫完整的擴展模型名稱,需要去掉擴展模型的Model后綴后調用。**三、M方法實例化** 如果我們沒有定義自定義模型,則可以直接采用M方法實例化需要繼承的擴展模型,例如: M("AdvModel:User")->top10(); 這里表示實例化User模型,而且該模型使用的基礎模型類為AdvModel擴展模型類,這里引用的擴展模型需要使用全名。 [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <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>

                              哎呀哎呀视频在线观看