## 安裝穩定版
~~~
composer create-project topthink/think tp
~~~
## 安裝開發版
~~~
composer create-project topthink/think=6.0.x-dev tp
~~~
## 更新
~~~
composer update topthink/framework
~~~
## 安裝多應用模式擴展`think-multi-app`
~~~
composer require topthink/think-multi-app
~~~
## 快速生成應用
~~~
php think build demo
php think build api
php think build admin
~~~
會自動生成`demo,api,admin`應用,自動生成的應用目錄包含了`controller`、`model`和`view`目錄以及`common.php`、`middleware.php`、`event.php`和`provider.php`等文件。
## 開啟調試模式
應用默認是部署模式,在開發階段,可以修改環境變量`APP_DEBUG`開啟調試模式,上線部署后切換到部署模式。
本地開發的時候可以在應用根目錄下面定義`.env`文件。
> 通過`create-project`安裝后在根目錄會自帶一個`.example.env`文件(環境變量示例),你可以直接更名為`.env`文件并根據你的要求進行修改,該示例文件已經開啟調試模式
### 2、打開錯誤調試
在開始之間,我們先打開tp6的錯誤調試
1.找到config/app.php下的show\_error\_msg ,改成true

2.找到下面根目錄下的.example.env文件,重命名此文件,把.example刪掉
實現隱藏index.php很簡單,只需要找到public目錄下的.htaccess文件,添加如下代碼就可以了。
```
<IfModule mod_rewrite.c> #如果mode_rewrite.c模塊存在 則執行以下命令
Options +FollowSymlinks -Multiviews
RewriteEngine On #開啟 rewriteEngine
# !-d 不是目錄或目錄不存在
RewriteCond %{REQUEST_FILENAME} !-d
# !-f 不是文件或文件不存在
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,PT,L]
# 參數解釋
# ^(.*)$: 匹配所有的路口映射
# QSA: (Query String Appending)表示保留參數入get傳值?xxx==xx;
# PT: 把這個URL交給Apache處理;
# L: 作為最后一條,遇到這條將不再匹配這條之后的規則
# 增加下面這項,否則在header中會獲取不到Authorization
SetEnvIf Authorization .+ HTTP\_AUTHORIZATION=$0
</IfModule>
```
### 6、jwt token驗證
```
composer require thans/tp\-jwt\-auth
```
## 在.env文件中生成密鑰secret
```
php think jwt:create
```
這個插件有三種方式【header,token,param】傳遞token,我就使用其中一個,也是最常用的一種,就是在【header】中傳遞token信息,這個插件默認驗證header中的token信息需要傳遞的參數名為authorization,而在header中直接傳遞該參數tp6是獲取不到的,需要做一些設置,
在根目錄中的public目錄下的.htacccess文件中添加
```
SetEnvIf Authorization .+ HTTP\_AUTHORIZATION=$0
```
```
// 引入jwt插件 use thans\\jwt\\facade\\JWTAuth;
// 生成token $token \= JWTAuth::builder(\['uid' \=> 1,'name'\=>'ceshi'\]); return $token;
```
#### (2).驗證token
我使用的是路由中間件的方式驗證token,
##### ① 寫一個中間件
在根目錄下的app目錄中創建middleware目錄,在其下創建CheckToken.php文件
*app/middleware/CheckToken.php*
```
<?php
namespace app\middleware;
use thans\jwt\facade\JWTAuth;
use thans\jwt\exception\JWTException;
class CheckToken
{
public function handle($request, \Closure $next)
{
// OPTIONS請求直接返回
if ($request->isOptions()) {
return response();
}
try {
JWTAuth::auth();
}catch (JWTException $e) {
return json($e->getMessage());
}
return $next($request);
}
}
```
##### ② 起別名
給該中間件起個別名,在根目錄下的config/middleware.php文件中

##### ③ 在路由文件中使用中間件
##### ④ 創建對應的方法
在第三步中我們創建了一個getUserInfo()方法,現在在User.php文件中創建
```
public function getUserInfo() {
return json(['id'=>1, 'name'=> '啦啦啦']);
}
```
[# thinkphp6搭建后端api接口](https://blog.csdn.net/weixin_45042868/article/details/117674575?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.essearch_pc_relevant)