后端开发
XPCMS 后端基于 ThinkPHP 8,遵循「控制器→服务→模型」三层架构。
目录结构
tp/app/
├── common/ # 跨应用共享
│ ├── model/ # 数据模型
│ └── service/ # 业务服务(ConfigService、ThemeService …)
├── index/ # 前台应用
│ ├── controller/ # 控制器(Index、Article、Product …)
│ ├── route/ # 路由配置
│ └── middleware/ # 中间件(MemberAuth、Csrf …)
├── admin/ # 后台应用
└── api/ # API 应用
控制器规范
所有前台控制器共享 FrontendConfig Trait,统一注入站点配置、栏目、广告等全局变量。
class Article
{
use FrontendConfig;
public function __construct(App $app)
{
$this->app = $app;
$this->request = $app->request;
$this->assignSiteConfig(); // 注入全局变量
}
public function index()
{
$articles = Article::where('status', 2)
->order('publish_time desc')
->paginate($pageSize);
View::assign('xp_articles', $articles);
return View::fetch();
}
}
服务层
所有跨控制器的业务逻辑封装到 app/common/service/ 下,例如:
ConfigService:站点 / 联系 / 社交 / 上传 配置ThemeService:主题加载与切换MemberService:会员登录、注册、找回
模型规范
- 继承
think\Model,命名app\common\model\Xxx - 表名前缀
xp_,主键id - 时间字段:
create_time、update_time(自动维护) - 状态字段:
status(1=启用 / 2=发布 / 0=禁用)
路由
所有路由定义在 app/index/route/app.php,禁止使用控制器自动路由。
中间件
MemberAuth:会员身份解析(session + cookie 兜底)Csrf:POST 表单 CSRF 校验RateLimit:登录 / 留言接口限流