thinkPHP 6.0 脚手架
- 钉钉日志通道
- 统一异常处理
- 统一状态码管理
- 自动统一响应输出
- 自动全局跨域处理
- 异常钉钉消息通知(基于钉钉日志通道)
- 环境配置文件自动加载
- php8.1+
- 框架thinkphp 6.1+
- mysql 5.6+
- URL重写 (nginx示例:)
其他服务器配置
location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } - 复制 项目根目录
.env-example文件,重命名为.env - 根据.env文件注释,配置对应的内容(主要是数据库连接)
-
项目根目录执行
- 【安装】composer install( 部署服务器建议:composer install --no-dev)
- 【升级】composer update
-
权限:
项目跟目录/runtime目录权限为777 ,Linux命令示例:chmod 777 runtime
- 开启miss路由(强制路由,使用前先配置路由)
- 错误码信息需统一在
app\exception\code目录处理 - 环境配置
- 主配置文件
项目根目录\.env应用配置 - 环境配置 切换
项目根目录\.envENV_CONFIG = xx - 环境配置文件
项目根目录\config\dev项目根目录\config\test项目根目录\config\prod
- 主配置文件
- 系统自动增加了全局跨域设置
- 需要取消跨域设置进入
app/middleware.php文件,删除对应配置即可
// 全局跨域处理 \app\middleware\CrossDomain::class - 需要取消跨域设置进入
- 响应输出系统会自动统一格式处理(app\middleware\ResultMiddleware::class),示例:
// 控制器代码
public function index(): string
{
return 'Welcome to v1 *****';
}
// 响应内容(自动转换为app\response\Result对象)
{"code":0,"message":"Success","data":"Welcome to v1 *****"}
备注:响应数据类型为app\response\Result会自动获取对应类属性(无特殊情况,直接return数据即可)
-
取消统一输出
- 使用注解(PHP8+)
use app\attribute\NoGlobalResponse; #[NoGlobalResponse] // 注解在类上,该类的所有方法全部取消统一输出 class Index { #[NoGlobalResponse] // 注解在方法上,当前方法取消统一输出 public function index() { return 'Welcome to v1 *****'; } } - 使用自定义函数
public function index() { no_global_response(); // 在输出之前调用自定义函数 return 'Welcome to v1 *****'; }
- 使用注解(PHP8+)
-
需要增加接口的请求和响应日志,只需要在路由配置增加上
->append(['apiLog' => true])即可,示例:Route::get('index', ':version.Index/index')->append(['apiLog' => true]);
- 伪异步
app\event\AsyncEvent; /**- 注册需要执行的函数
- @param callable $callback 回调方法
- @param array $args 参数 */ AsyncEvent::register(callable $callback, array $args = []);
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─Annotation 注解目录
│ ├─controller 控制器目录
│ ├─event 事件目录
│ ├─model 模型目录
│ ├─exception 异常目录
│ ├─middleware 中间件目录
│ ├─service 服务目录(业务层)
│ ├─manager 可复用逻辑层目录
│ ├─utils 工具集目录
│ │
│ ├─ ... 更多自定义目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 配置目录
│ ├─dev dev环境配置
│ ├─prod prod环境配置
│ ├─test test环境配置
│ │
│ ├─ ... 更多环境配置目录
│ │
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
- 调用流程 controller -> service -> manager -> model
- Controller层:轻业务逻辑,参数校验,异常兜底。通常这种接口可以轻易更换接口类型,所以业务逻辑必须要轻,甚至不做具体逻辑
- Service层:业务层,复用性较低,这里推荐每一个 controller 方法都得对应一个 service, 不要把业务编排放在 controller 中去做
- Mannager层:可复用逻辑层,比如逻辑上的连表查询等,供Service层组合调用形成对应的业务逻辑
- model层:数据库访问层。主要负责操作数据库的某张表
QQ交流群:1004068839