<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國際加速解決方案。 廣告
                # 控制器架構 * * * * * 先來看看咱們系統的架構圖,便于理解結構。 ![](https://box.kancloud.cn/3a078a1fca6e731d603895a0e9c5dd8e_1366x1334.png) 從圖上可以看到系統初始化行為執行完畢就進入了公共控制器,為什么會執行進公共控制器呢? 咱們隨便弄個URL來分析一下。 ![](https://box.kancloud.cn/a185fc2e38f3843d413fa81e04512bee_1917x759.jpg) 這個是統計分析下的執行速度功能,URL是https://demo.onebase.org/admin.php/statistic/exespeed.html admin.php 入口進來的肯定就是 admin模塊咯,statistic控制器,exespeed方法。 找到方法所在位置 ![](https://box.kancloud.cn/8d31aef817b99a8e867bcecf4dedc8f2_1107x905.jpg) 代碼拉到最上方可以看到 class Statistic extends AdminBase, 說明此類繼承了 AdminBase,通過命名就可以猜測到這個就是admin模塊的基礎控制器,既然繼承了AdminBase 那肯定是會先執行父類的構造方法,然后打開AdminBase.php發現class AdminBase extends ControllerBase ,而 ControllerBase 是公共模塊下的控制器根源,為什么說是根源呢?因為這是OneBase中最底層的控制器了,再往下看就是 class ControllerBase extends Controller,框架的控制器就不在講解范圍了,所以咱們將ControllerBase當做最底層的控制器。 通過分析咱們大概就心里有個控制器繼承層次關系了,Statistic 繼承了 AdminBase 繼承了 ControllerBase。 因為類實例化之前會執行父類構造函數,那么執行的流程就是 ControllerBase -> AdminBase -> Statistic 此處只是隨便拿一個統計分析類的某個操作來講解,其他控制器類也是一樣的流程,當然也有例外 比如 Login 控制器,因為在AdminBase 中有登錄驗證,若繼承AdminBase那豈不是驗證不通過,那就沒辦法登錄咯。 但是 Login 中咱們還需要獲取請求信息,而請求信息是在ControllerBase中進行的初始化,所以此處就直接跳過了AdminBase,繼承 ControllerBase,這樣就不用驗證登錄并且使用請求信息了。 其他模塊下的控制器也是一樣,可以看到api模塊下的控制器中有 ApiBase.php,index模塊下的控制器中有IndexBase.php等。 控制架構設計中,這種多層父類控制器是有好處的,比如咱們想整套系統執行時都執行某操作,那么所有模塊下的控制器都會執行 ControllerBase, 那就可以放在 ControllerBase中,若咱們想在api模塊下做一個請求頻率限制而不影響其他模塊,那么咱們就可以把代碼放在 ApiBase.php中觸發。
                  <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>

                              哎呀哎呀视频在线观看