安装稳定版
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
文件并根据你的要求进行修改,该示例文件已经开启调试模式
打开错误调试
在开始之间,我们先打开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>
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;
验证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'=> '啦啦啦']);
}