<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 月 5 日 發布 ## 引言 ThinkPHP`5.2`發布測試版本以來,越來越多的的用戶開始關注(讓人驚奇的是居然有用戶已經開始用于項目,實在是勇氣可嘉^_^),并希望能有官方手冊,但很遺憾的是,在正式版本尚未發布之前,官方暫時不會出開發手冊。主要原因是正式發布之前,仍然有變化的可能,手冊存在不確定因素,也不希望誤導大家引起誤會,另外一方面,確實是因為忙(帶娃模式),最近連《[笨辦法學ThinkPHP5.1](http://www.hmoore.net/thinkphp/thinkphp-the-hard-way)》還一直擱淺著呢,實在是抱歉。 不過,也說過會寫一些簡單的教程先,讓那些熱衷于測試新版本的用戶有機會學習和體驗。因此,現在開始我會陸續更新一些`5.2`的使用教程,主要是講述一些區別之處,避免雷區。 希望通過本系列教程拋磚引玉,開啟`5.2`的學習之門,不排除可能由于后續版本的調整而產生變化,有興趣的開發者可以參與新版文檔教程的寫作貢獻,官方會擇優收錄到[ThinkPHP開發者周刊](http://www.hmoore.net/thinkphp/weekly/content)中。 >[danger] 再次強調,`5.2`版本目前屬于測試版本,存在不穩定性,請勿輕易用于正式項目。 ## 安裝 由于`5.2`版本完全依賴`Composer`,因此只能通過`composer`安裝才能使用,不同于`5.0`和`5.1`版本,下載或者`Git`安裝都可以使用。 由于只是測試階段,所以必須安裝`dev`版本 ``` composer create-project topthink/think tp520 5.2.*-dev ``` 啟動服務 ``` cd tp520 php think run ``` ## 入口文件 新版的入口文件還是位于`public`目錄下面,由于直接使用`composer`的自動加載機制,因此框架核心已經不再使用`Loader`類了而是改為加載`composer`的`autoload`文件。 秉承`ThinkPHP`大道至簡的原則,入口文件依然非常之簡單: ``` namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行應用并響應 (new App())->run()->send(); ``` 注意每一個入口文件在新版里面總是對應一個應用,有意思的是,不同的應用入口文件除了文件名不同外代碼可能完全一樣(會自動綁定到文件名對應的應用)。 如果你的文件名和應用名不一致,那么可能需要略微調整如下: ``` namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行應用并響應 (new App())->name('app_name') ->run() ->send(); ``` `think\App`類還提供了很多的設置方法,都可以在`run`之前調用。這個有興趣深入了解的可以通過源碼查看。 由于新版本一個入口文件對應一個應用,如果你希望保持`5.1`版本的URL形式不變,直接訪問不同的應用,一個最簡單的辦法就是設置`Apache`的`.htaccess`文件。 ``` <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([a-z]+)/(.*)$ $1.php/$2 [QSA,PT,L] </IfModule> ``` 其它的WEB服務器環境可以參考修改。 ## 應用目錄及命名空間調整 新版的目錄結構其實看起來和`5.1`并無多大的差異,除了`thinkphp`框架目錄已經納入`vendor`之外。另外應用目錄從原來的`application`更改為`app`,之所以做這個調整是為了讓新手更容易理解應用的命名空間對應,不至于產生不必要的困惑。 但其實有一個本質的改變就是新版不再支持多模塊,而改為原生多應用支持。因此你原來的模塊目錄可能在新版就變成了應用目錄,為了讓升級工作更簡單,新版的應用命名空間和多模塊保持一致。 應用命名空間類似于 ``` \app\admin\controller \app\admin\model ``` 如果你需要更改根命名空間為`top`,有兩種辦法。一種是修改`composer.json`文件的`autoload`,這樣可以不改變目錄名。 ``` "psr-4": { "top\\": "app" }, ``` 第二種辦法是直接修改你的`app`目錄為`top`。 無論使用哪一種方法,最后在入口文件中設置根命名空間名稱。 ``` namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行應用并響應 (new App())->setRootNamespace('top') ->run() ->send(); ``` 如果你的`admin`應用不在`app`目錄下面,有完全獨立的命名空間例如 ``` \think\admin ``` 就可以在入口文件`admin.php`中進行指定 ``` namespace think; require __DIR__ . '/../vendor/autoload.php'; // 設置當前應用的命名空間 (new App())->setNamespace('\think\admin') ->run() ->send(); ``` 這個應用放在什么位置取決于你的命名空間自動加載路徑,這一設計讓你的應用可以通過`composer`來加載。 ## 多應用模式 多應用模式下面,除了應用目錄的區別外,`runtime`目錄下面會自動創建各個應用的子目錄(注意,這個目錄同樣適用于`composer`加載的應用),但你只需要通過`App::getRuntimePath()`方法獲取當前應用的`runtime`目錄。 ``` runtime/home/ runtime/admin/ ``` 多個應用的路由定義文件都是獨立的,在`route`目錄下面創建對應目錄的子目錄存放每個應用的路由定義。 ``` route/home/ route/admin/ ``` 多個應用允許加載統一的公共文件。 ``` app/common.php app/admin/common.php app/home/common.php ``` 對于配置文件而言,`config`目錄下為應用公共配置,`config`下子目錄則為單個應用的獨立配置。 ``` config/ config/admin/ config/home/ ``` 可能有人認為現在不同的應用是獨立的入口文件,每個應用之間沒法互通了,其實這個理解是錯誤的。不同的應用仍然是可以相互調用的,畢竟類庫都是基于命名空間的。 ## 單應用模式 上面的目錄結構其實是多應用設計,和之前版本一樣同樣支持單應用模式(之前版本其實是單一模塊模式)如果你使用的是單應用的話,目錄結構其實就變成了下面的結構。 ``` www ├─app 應用目錄 │ ├─controller 控制器目錄 │ ├─model 模型目錄 │ ├─view 視圖目錄 │ └─ ... 更多類庫目錄 ``` 系統的一個默認判斷單應用的規則是`app`目錄下面如果存在`controller`目錄,則判斷當前為單應用模式。如果你更改了默認的訪問控制器層的名稱(或者剛好有一個應用名稱也叫`controller`),那么可以在入口文件里面調用 `multi(false)`來設置為單應用模式。 ``` namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行應用并響應 (new App())->multi(false) ->run() ->send(); ``` 單應用模式下,如果需要更改命名空間,`setNamespace`和`setRootNamespace`方法是等效的。 ## 小結 本篇我們基本了解了`5.2`的目錄結構和入口文件的用法,并掌握了多應用模式和單應用模式的區別及使用。下一篇,我會給大家講下數據庫和模型和之前版本的區別。
                  <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>

                              哎呀哎呀视频在线观看