1. 程式人生 > 其它 >tp6從新安裝一個空白專案理解多應用模式

tp6從新安裝一個空白專案理解多應用模式

準備

安裝tp6和部署這裡不表,我們一步步來搞清楚tp6多引用模式

本地域名 :www.duo.com

1.安裝多應用

composer require topthink/think-multi-app

建立預設應用index

重新整理頁面,發現報錯了

這個時候怎麼檢視具體報錯資訊?複製一份.example.env命名為.env

再次重新整理,可以看到詳細的報錯資訊

跟著提示我們建立控制器
這是命令列建立,單應用和多應用不太一樣
文件:https://www.kancloud.cn/manual/thinkphp6_0/1037644

php think make:controller Index@Index --plain

然後寫一個index方法

重新整理頁面,可以看到index這個預設應用可以訪問到了

接著我們一口氣直接建立一個網站後臺應用

php think build admin

這個時候訪問,域名 新增一個admin 即可直接訪問

接著我們繼續說,一般開發肯定是要使用強制路由,所去config/route.php下如下兩專案改成true

強制路由應該不難理解,完全匹配要是不知道含義的可以看文件解釋
https://www.kancloud.cn/manual/thinkphp6_0/1037495

接著我們重新整理頁面,提示路由未定義

去admin應用下定義路由,直接把最外層的route目錄複製一份到admin應用

重新整理頁面,又正常顯示了

按照同樣的方法,也複製一份route目錄到Index應用,即可正常訪問

拓展:平常在開發中可能不止是傳統pc站的應用,可以能還有api和移動端的。
所以我們在建立應用的時候多半會出現以下幾個模組

//分別是前臺pc主站
php think build index
//後期可能會改版成前後端分離的
php think build indexapi
//傳統後臺管理
php think build admin
//後臺的api介面
php think build adminapi

//傳統的移動端應用(其實這個也是屬於前臺,如果這個移動端專案 是前後端分離的方式來做的話,那麼直接用上面的indexapi介面就行,可以弄一箇中間件,檢測到是手機訪問重定向到 m.xx.com 類似京東www.jd.com訪問 如果是檢測到手機訪問 會自動跳轉到 m.jd.com )
php think build mobile

接著我們繼續講,如何隱藏後臺管理的入口地址?
比如 http://www.duo.com/admin 我不想讓普通使用者輸入 admin 就直接進入後臺的登入頁面

我們可以這樣做,通過應用對映 來隱藏入口地址,此時通過 /admin就不能訪問了 ,上線後可以隨意更改後臺入口地址


接下來清理以下目錄,我們把一些多餘的目錄刪除

現在看起來要清楚很多了

接著我們繼續來講一個知識點,那就是api模組,現在幾乎都是api前後端分離模式的
我們建立一個api應用

關於第一個api的版本控制問題(重點),有些時候有這樣的場景,就是api第一個版本不能立馬下線或者需要保留的時候,我們可以這樣來進行升級

建立類

php think make:controller api@v1/User --plain
 php think make:controller api@v2/User --plain

路由重新定義

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <[email protected]>
// +----------------------------------------------------------------------
use think\facade\Route;


Route::group('v1', function () {
    Route::get('user', 'v1.User/index');
});



Route::group('v2', function () {
    Route::get('user', 'v2.User/index');
});

前面那個v1. v2. 格式不理解的看文件
https://www.kancloud.cn/manual/thinkphp6_0/1037497

訪問,這樣就完成了對api版本的控制。

接著我們來講一下,api開發的第二個知識點,二級域名路由訪問api
意思就是由原來的

http://www.duo.com/api/v2/user

改成如下格式來進行訪問

http://api.duo.com/v2/user

這種常見的操作,我們該怎麼實現呢?

首先,我們要把二級域名 api.duo.com解析到你的伺服器的ip地址上,我這裡本地測試就用phpstudy來模擬了

記得新增偽靜態

解析好後,我們開啟專案config/app.php如下配置即可

訪問測試,注意:這樣配置後原來的路由地址訪問依然有效。