MVC 与路由
使用显式路由、精简控制器与共享响应协议。
请求链路
请求先由 ThinkPHP 多应用机制识别模块,再匹配该模块 route 目录中的显式路由,经过中间件后进入控制器。
模块路由不重复包含模块前缀。例如 app/api/route 中声明 v1/roles,对外地址是 /api/v1/roles。未声明的路径不能通过猜测控制器方法访问。
API 控制器示例
php
<?php
namespace app\api\controller;
use think\Response;
/** 只读协议示例;真实业务数据应来自服务和数据库。 */
final class Example extends BaseApi
{
public function index(): Response
{
return $this->success(['version' => '1.0.0']);
}
}路由示例
新增平台接口还需明确控制器权限检查。应用业务接口则在应用 route.php 与 manifest.php 的页面契约中同时登记。
php
<?php
use think\facade\Route;
// app/api/route/example.php,实际访问 /api/v1/example。
Route::get('v1/example', 'Example/index');约定
- 类名使用 StudlyCaps,方法使用 camelCase,模块目录使用小写。
- 所有写操作验证输入,并按需使用数据库事务;不接收客户端指定的任意表名或 SQL。
- 后台页面继承 BaseAdmin,平台 API 继承 BaseApi。
- 新增和编辑使用弹窗,删除需要二次确认;后端仍需独立鉴权。