<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 功能強大 支持多語言、二開方便! 廣告
                # MVC SF3是基于MVC層次的。MVC層次很好地隔離了一個Web應用的各個不同層面: * M(odel):模型層,也可以理解為數據庫接口層。這個層在PHP對象(類、成員)和數據庫結構(表格 、字段)之間建立起一種映射關系。 * V(iew):呈現層,或者叫展示層。我們可以簡單地將其理解為我們在Web瀏覽器中看到的一個一個頁面。 * C(ontroller):控制層。它回到這樣一個問題:頁面中的內容(特別是動態內容)應該從哪里來? SF3官方文檔中有這么[一張圖](http://symfony.com/doc/current/book/http_fundamentals.html): ![](https://box.kancloud.cn/932328a5d21efd3113d0c217eaf70a3a_690x273.png) 這里出現了C和V的代表,如`Front Controller`,`Controller`,`Response`等。沒有出現的是M的代表。所以我們可以基于這張圖來加以擴展: ![](https://box.kancloud.cn/d8224d98d16788dd926b3e8819288da6_1211x552.png) 這張圖中的`Entity: blog`就是個M。在實際應用中,它應該是一個表格,保存了所有的blog的記錄。某一個控制層的控制器(比如`blogAction`)向`blog`這個實體進行查詢和其它操作。根據操作的不同,`blog`這個實體可能返回所有博客的列表,或者是經過篩選、排序過的列表等,也可能是CRUD中其它的操作。 重要更新:在之前的開發中,筆者都采用了標準的MVC模式。而在最新一次的升級開發中,筆者采用了更靈活、更去耦合化的方式。 ![](https://box.kancloud.cn/a1a6e7590609d97a68ce6b6479dc4ed3_1086x565.png) 在圖示中我們看到,一個Controller不再直接和數據庫/實體打交道,換句話說,在Controller中不再直接從數據庫中獲得數據,而是借由一個第三方(當然也是由筆者開發)的RESTful API封裝層從數據庫中獲取數據并返回給調用的Controller。 這么做的好處有不少。 首先,Controller端的代碼極為簡化,統一為“準備參數、發起調用、獲得返回、處理返回、顯示模板”。而其中的調用過程變成單純的調用遠程API。 其次,API的開發和應用本身沒有太大的關聯,基本去耦合。 第三,API本身可以向外開放,獲得復用。
                  <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>

                              哎呀哎呀视频在线观看