Tp6
最后更新于:2022-04-02 02:22:47
[TOC]
> [thinkphp 6](https://www.kancloud.cn/manual/thinkphp6_0/1037479)
## 查看所有 think 命名
`php think list`
## 开启调试模式
根目录的`.example..env`改为`.env`文件
## Facade 使类无需实例化而直接进行静态方式调用
> [参考](https://www.kancloud.cn/manual/thinkphp6_0/1037491)
注意事项, 此时的facade 无法被 IDE 识别,可通过注释方法识别
```
/**
* @method string hello(string $name) static 读取缓存并删除
*/
class Test extends Facade{
```
就可以识别函数
若想静态调用系统函数,使用`think\facade\xxx` 的命名空间
## 多应用模式
```
├─app 应用目录
│ ├─index 主应用
│ │ ├─controller 控制器目录
│ │ ├─config 配置目录(优先)
│ │ └─ ... 更多类库目录
│ ├─admin 后台应用
│ │ ├─controller 控制器目录
│ │ ├─config 配置目录(优先)
│ │ └─ ... 更多类库目录
│
├─public WEB目录(对外访问目录)
│ ├─admin.php 后台入口文件
│ ├─index.php 入口文件
│
├─config 应用配置目录
│ ├─index index应用配置
│ └─admin admin应用配置
│
├─route 路由定义目录
│ ├─index index应用路由定义目录
│ └─admin admin应用路由定义目录
│
├─runtime 运行时目录
│ ├─index index应用运行时目录
│ └─admin admin应用运行时目录
```
1.
开启多应用
`config/app.php`
```
'auto_multi_app' => true,
'default_app' => 'index',
//指定默认模块
```
### 禁止应用访问
`'deny_app_list' => ['common']
`
### 自动生成应用
把`build.php`文件放到app目录下执行
`php think build 应用名`
## 中间件
1. 生成中间件
`php think make:middleware Check
`
2.设置中间件
```
class InAppCheck
{
public function handle($request, \Closure $next)
{
if (preg_match('~micromessenger~i', $request->header('user-agent'))) {
$request->InApp = 'WeChat';
} else if (preg_match('~alipay~i', $request->header('user-agent'))) {
$request->InApp = 'Alipay';
}
return $next($request);
}
}
```
3.应用中间件
```
//在对应的 middleware.php
return [
app\middleware\InAppCheck::class,
];
```
或者路由中间件
```
Route::rule('hello/:name','hello')
->middleware([\app\middleware\Auth::class]);
```
## 路由
### 变量规则
自定义默认的规则
`'default_route_pattern' => '[\w\-]+',
`
局部变量
```
Route::get('new/:name', 'News/read')
->pattern(['name' => '[\w|\-]+']);
```
全局变量规则
```
Route::pattern([
'name' => '\w+',
'id' => '\d+',
]);
```
';