<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 2018 年 12 月 16 日 發布 `5.2`版本的設計初衷是致力于提供一個更規范、更易用和更高效的輕量級PHP框架,針對這個初衷我們總結歸納了一些新版框架的指導思想,不過由于目前`5.2`版本還是測試階段,有很多方面的調整會在后續的更新中逐步改進和完善到位,也不排除會有一些額外的調整。 歡迎有更多的開發者加入新版的架構設計中來,給我們提供更多的反饋和建議。 ## 完全依賴`Composer` ThinkPHP從`5.0`開始擁抱`composer`,支持通過`composer`安裝,同時也支持單獨通過`git`安裝,而且有自己的獨立的文件自動加載機制,所以說并不依賴`composer`,這也是官方把`thinkphp`目錄放到項目根目錄的原因之一。 經過兩個版本的用戶培養工作,`5.2`版本將徹底依賴`composer`安裝,并且由`composer`完全接管框架的自動加載,原來的`Loader`類也已經取消了。框架目錄按照`composer`的安裝規范納入`vendor`目錄。 ## 基于`7.1+`強類型約束 基于PHP`7.1+`版本的設計主要是為了使用PHP7的強類型約束功能,`7.1`對方法變量類型的支持已經很完善了。而且`5.2`版本也率先在主流框架中開啟了嚴格模式,所有的變量和返回值都會強制進行類型檢查,此舉可以幫助開發者提前發現一些問題隱患,從而更規范的進行變量使用。 >[danger] 基于`7.1+`不等于不支持PHP`7.2`甚至更高版本,因為核心框架內部沒有使用`7.2`版本的任何特性。 ## 用法盡量統一 早先版本的ThinkPHP雖然功能強大,但用法太多一直為開發者所詬病。實現同一個功能有太多的用法,每個人都有自己的一套用法,導致項目代碼規范不統一。`5.2`在設計之初,就奔著精簡和統一用法的決心,讓核心的用法盡量統一,便于團隊形成一致的使用規范。 一個很典型的例子就是新版的數據查詢取消了`get`/`all`,無論是`Db`類還是模型都統一使用`find`/`select`方法(事實上,5.1最新LTS版本已經可以統一使用了,不過沒有廢除`get`/`all`),這樣的例子還有很多,暫時就不一一敘述了。 另外一個用法統一的表現是在一些方法的參數上,不再提供多種用法,例如模板變量的賦值之前版本下面兩種方式都支持: ``` $this->assign('name', 'think'); $this->assign(['name' => 'think']); ``` 現在只能使用后者,統一傳入數組參數。 ## 慣例重于配置,規范重于靈活 ThinkPHP`5.0`框架在很多方面比較靈活,但這樣容易導致缺乏規范,`5.1`版本由于取消了系統常量對框架目錄的自定義做了嚴格的規范,這一現象有所緩解。`5.2`版本更側重于慣例和規范,而不盲目提供太靈活的設置和調用。 ## 擁抱`PSR`規范,但不盲目 新版會遵循更多的`PSR`規范,但鑒于很多舊的`PSR`官方庫的接口定義版本過舊導致沒法進行強類型約束,因此不排除會做一些可能的變通。 想必[PHP FIG](https://github.com/php-fig)組織制定PSR規范的同時,給出的接口規范只是一種示例而非強制吧。 ## 提供建議使用的助手函數 對于助手函數的使用,僅提供推薦和允許使用的,清理一些不必要或者不推薦的。 ## 組件化和可組裝原則 關于核心是否需要組件化一直在內部爭論的部分,在現代開發模式中,已經完全可以基于`composer`里的各種組件組裝自己的框架,ThinkPHP也會致力于提供各種組件,但不一定確保核心框架是完全組件化。但可能的處理方式是盡量在內部形成低耦合和高內聚,而非完全的組件化。核心非必需組件可替換及組裝,同時低于20%的使用場景內部獨立設計為可配置替換,低于5%的功能場景尤其是增加性能開銷的則考慮直接從核心移除,需要的時候通過擴展繼續使用。 比如,路由檢查、請求緩存以及多語言支持功能已經納入`AppInit`事件監聽設計,完全可以在應用中自行控制和替換。 ## 功能精簡,性能提升 之前版本的框架設計了很多很多細節的功能,但使用的頻率非常之低,占用了內存不說,對于不需要這些功能的開發者來說,閱讀文檔和理解一堆配置參數也會帶來更多的困惑。事實上,很少有項目能用到核心框架超過50%的功能,此次版本的功能精簡對于大部分應用開發而言,幾乎沒有任何的影響,但很明顯能夠感受到性能的提升。
                  <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>

                              哎呀哎呀视频在线观看