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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 控制器擴展 [上一頁](# "上一頁")[下一頁](# "下一頁") 系統內置的Action基礎類完成的功能有限,有時候,我們在項目經常需要擴展一個用于項目的公共Action,又或者我們需要為某些特殊應用增加功能,這些都可以使用控制器擴展來實現。 ### 控制器擴展接口 系統Action類提供了一個初始化方法_initialize接口,可以用于擴展需要,_initialize方法會在所有操作方法調用之前首先執行,用法: <table border="0" cellspacing="1" cellpadding="0"><tr><th colspan="2">_initialize??控制器初始化方法</th> </tr><tr><td>用法</td> <td>_initialize()</td> </tr><tr><td>參數</td> <td>無</td> </tr><tr><td>返回值</td> <td>無</td> </tr><tr><td>相關方法</td> <td>可以和getActionName方法配合使用</td> </tr></table> 除了初始化接口外,Action類還提供了兩個用于行為擴展的標簽位置action_begin和action_end,因此你還可以通過行為擴展來擴展控制器的功能。 控制器擴展只需要繼承Action,例如:`Class?ExtendAction?extends?Action{ ???Public?function?_initialize(){ ???//?初始化的時候檢查用戶權限 ???$this->checkRbac(); } ????//?檢查用戶權限 ??protected?function?checkRbac()?{ ????//?這里是具體的檢測代碼 ?} ????//?添加新的上傳操作方法 ??protected?function?upload()?{ ????//?這里是具體的上傳實現代碼 ?} }`在有些情況下面,控制器擴展并不一定要繼承基礎的Action。 ### Hack方法 新版提供了兩個hack方法用于對模塊和操作方法進行擴展,這些hack函數可以定義到項目的公共函數庫里面。 <table border="0" cellspacing="1" cellpadding="0"><tr><th colspan="2">__hack_module??模塊hack函數</th> </tr><tr><td>用法</td> <td>__hack_module?()</td> </tr><tr><td>參數</td> <td>無</td> </tr><tr><td width="50">返回值</td> <td>如果返回一個對象,則會繼續執行該對象的對應當前操作的方法。否則,將在執行完__hack_module函數后中止當前操作的執行,但不影響app_end標簽的行為執行。</td> </tr></table> __hack_module僅在訪問一個不存在的模塊的時候會被調用,優先級大于空模塊。簡單的說,如果定義了__hack_module 則當前模塊不存在的情況下操作會被接管。 下面是一個定義的示例:`function?__hack_module(){ ????if?('Test'==?MODULE_NAME){ ???????$module?=?New?MyAction(); ???????return?$module; ????} }` <table border="0" cellspacing="1" cellpadding="0"><tr><th colspan="2">__hack_action??操作hack函數</th> </tr><tr><td>用法</td> <td>__hack_action?()</td> </tr><tr><td>參數</td> <td>無</td> </tr><tr><td>返回值</td> <td>無</td> </tr></table> __hack_action函數定義后僅在訪問一個不存在的操作方法,而且當前控制器沒有定義空操作方法和對應的默認模板文件的時候才會被執行。在__hack_action 函數中獲取當前的操作名可以調用常量ACTION_NAME,你可以根據情況自行處理當前的操作。 下面是一個定義的示例:`function?__hack_action(){ ????if?('Test'==?ACTION_NAME){ ???????echo?'Hello,Just?Test!?You?can?do?anything?here…'; ????} }` [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <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>

                              哎呀哎呀视频在线观看