<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國際加速解決方案。 廣告
                ## 多應用 安裝后默認使用**單應用模式部署**,目錄結構如下: ~~~ ├─app 應用目錄 │ ├─controller 控制器目錄 │ ├─model 模型目錄 │ ├─view 視圖目錄 │ └─ ... 更多類庫目錄 │ ├─public WEB目錄(對外訪問目錄) │ ├─index.php 入口文件 │ ├─router.php 快速測試文件 │ └─.htaccess 用于apache的重寫 │ ├─view 視圖目錄 ├─config 應用配置目錄 ├─route 路由定義目錄 ├─runtime 應用的運行時目錄 ~~~ > 單應用模式的優勢是簡單靈活,URL地址完全通過路由可控。配合路由分組功能可以實現類似多應用的靈活機制。 >[danger] 如果要使用多應用模式,你需要安裝多應用模式擴展`think-multi-app`。 ``` composer require topthink/think-multi-app ``` 然后你的應用目錄結構需要做如下調整,主要區別在`app`目錄增加了應用子目錄,然后配置文件和路由定義文件都納入應用目錄下。 ~~~ ├─app 應用目錄 │ ├─index 主應用 │ │ ├─controller 控制器目錄 │ │ ├─model 模型目錄 │ │ ├─view 視圖目錄 │ │ ├─config 配置目錄 │ │ ├─route 路由目錄 │ │ └─ ... 更多類庫目錄 │ │ │ ├─admin 后臺應用 │ │ ├─controller 控制器目錄 │ │ ├─model 模型目錄 │ │ ├─view 視圖目錄 │ │ ├─config 配置目錄 │ │ ├─route 路由目錄 │ │ └─ ... 更多類庫目錄 │ ├─public WEB目錄(對外訪問目錄) │ ├─admin.php 后臺入口文件 │ ├─index.php 入口文件 │ ├─router.php 快速測試文件 │ └─.htaccess 用于apache的重寫 │ ├─config 全局應用配置目錄 ├─runtime 運行時目錄 │ ├─index index應用運行時目錄 │ └─admin admin應用運行時目錄 ~~~ 從目錄結構可以看出來,每個應用相對保持獨立,并且可以支持多個入口文件,應用下面還可以通過多級控制器來維護控制器分組。 ## 自動多應用部署 支持在同一個入口文件中訪問多個應用,并且支持應用的映射關系以及自定義。如果你通過`index.php`入口文件訪問的話,并且沒有設置應用`name`,系統自動采用自動多應用模式。 自動多應用模式的URL地址默認使用 ~~~ // 訪問admin應用 http://serverName/index.php/admin // 訪問shop應用 http://serverName/index.php/shop ~~~ > 也就是說`pathinfo`地址的第一個參數就表示當前的應用名,后面才是該應用的路由或者控制器/操作。 如果直接訪問 ~~~ http://serverName/index.php ~~~ 訪問的其實是`index`默認應用,可以通過`app.php`配置文件的`default_app`配置參數指定默認應用。 ~~~ // 設置默認應用名稱 'default_app' => 'home', ~~~ 接著訪問 ~~~ http://serverName/index.php ~~~ 其實訪問的是`home`應用。 >[danger] 自動多應用模式下,路由是每個應用獨立的,所以你沒法省略URL里面的應用參數。但可以使用域名綁定解決。 ## 多應用智能識別 如果沒有綁定入口或者域名的情況下,URL里面的應用不存在,例如訪問: ``` http://serverName/index.php/think ``` 假設并不存在`think`應用,這個時候系統會自動切換到單應用模式,如果有定義全局的路由,也會進行路由匹配檢查。 如果我們在`route/route.php`全局路由中定義了: ``` Route::get('think', function () { return 'hello,ThinkPHP!'; }); ``` 訪問上面的URL就會輸出 ~~~ hello,ThinkPHP! ~~~ 如果你希望`think`應用不存在的時候,直接訪問默認應用的路由,可以在`app.php`中配置 ``` // 開啟應用快速訪問 'app_express' => true, // 默認應用 'default_app' => 'home', ``` 這個時候就會訪問`home`應用下的路由。 ## 增加應用入口 允許為每個應用創建單獨的入口文件而不通過`index.php`入口文件訪問多個應用,例如創建一個`admin.php`入口文件來訪問`admin`應用。 ~~~ // [ 應用入口文件 ] namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行HTTP應用并響應 $http = (new App())->http; $response = $http->run(); $response->send(); $http->end($response); ~~~ > 多應用使用不同的入口的情況下,每個入口文件的內容都是一樣的,默認入口文件名(不含后綴)就是應用名。 使用下面的方式訪問`admin`應用 ~~~ http://serverName/admin.php ~~~ 如果你的入口文件名和應用不一致,例如你的后臺`admin`應用,入口文件名使用了`test.php`,那么入口文件需要改成: ~~~ // [ 應用入口文件 ] namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行HTTP應用并響應 $http = (new App())->http; $response = $http->name('admin')->run(); $response->send(); $http->end($response); ~~~ ## 獲取當前應用 如果需要獲取當前的應用名,可以使用 ``` app('http')->getName(); ``` ## 應用目錄獲取 單應用和多應用模式會影響一些系統路徑的值,為了更好的理解本手冊的內容,你可能需要理解下面幾個系統路徑所表示的位置。 | 目錄位置 | 目錄說明 | 獲取方法(助手函數) | | --- | --- | --- | | 根目錄 | 項目所在的目錄,默認自動獲取,可以在入口文件實例化`App`類的時候傳入。 | `root_path()` | | 基礎目錄 | 根目錄下的`app`目錄 | `base_path()` | | 應用目錄 | 當前應用所在的目錄,如果是單應用模式則同基礎目錄,如果是多應用模式,則是`app`/應用子目錄 | `app_path()` | | 配置目錄 | 根目錄下的`config`目錄 | `config_path()` | | 運行時目錄 | 框架運行時的目錄,單應用模式就是根目錄的`runtime`目錄,多應用模式為`runtime`/應用子目錄 | `runtime_path()` | >[danger] 注意:應用支持使用`composer`包,這個時候目錄可能是`composer`包的類庫所在目錄。 對于非自動多應用部署的情況,如果要加載`composer`應用,需要在入口文件中設置應用路徑: ~~~ // [ 應用入口文件 ] namespace think; require __DIR__ . '/../vendor/autoload.php'; // 執行HTTP應用并響應 $http = (new App())->http; $response = $http->path('path/to/app')->run(); $response->send(); $http->end($response); ~~~ ## 應用映射 自動多應用模式下,支持應用的別名映射,例如: ~~~ 'app_map' => [ 'think' => 'admin', // 把admin應用映射為think ], ~~~ 應用映射后,原來的應用名將不能被訪問,例如上面的`admin`應用不能直接訪問,只能通過`think`應用訪問。 應用映射支持泛解析,例如: ~~~ 'app_map' => [ 'think' => 'admin', 'home' => 'index', '*' => 'index', ], ~~~ 表示如果URL訪問的應用不在當前設置的映射里面,則自動映射為`index`應用。 如果要使用`composer`加載應用,需要設置 ``` 'app_map' => [ 'think' => function($app) { $app->http->path('path/to/composer/app'); }, ], ``` ## 域名綁定應用 如果你的多應用使用多個子域名或者獨立域名訪問,你可以在`config/app.php`配置文件中定義域名和應用的綁定。 ~~~ 'domain_bind' => [ 'blog' => 'blog', // blog子域名綁定到blog應用 'shop.tp.com' => 'shop', // 完整域名綁定 '*' => 'home', // 二級泛域名綁定到home應用 ], ~~~ ## 禁止應用訪問 你如果不希望某個應用通過URL訪問,例如,你增加了一個`common`子目錄用于放置一些公共類庫,你可以設置 ``` 'deny_app_list' => ['common'] ``` >[danger] 多應用模式并非核心內置模式,官方提供的多應用擴展更多是拋磚引玉,你完全可以通過中間件來擴展適合自己的多應用模式
                  <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>

                              哎呀哎呀视频在线观看