refactor: 拆分 config.php 为 lib/ 模块,消除页面层重复代码

纯结构性重构,不改变任何功能。

- config.php 由 739 行缩减为 42 行,改为纯引导入口;新增 ROOT_DIR 常量
  统一拼接绝对路径(lib/ 内模块的 __DIR__ 会指向 lib/,必须替换)
- 新增 lib/ 五个模块 db.php / helpers.php / auth.php / movies.php / stats.php,
  由 config.php 按 db → helpers → auth → movies → stats 顺序加载
- add.php、edit.php 各自约 80 行重复的 POST 处理改为调用
  resolveCinemaId / resolvePersonIds / linkViewers / uploadImageFile /
  saveBase64Image / uploadMultiplePhotos / deleteStoredFile
- cinemas.php、persons.php 中重复 4 次的颜色校验改用 normalizeHexColor()
- toggleNewViewer / removeViewerRow / toggleNewCinema 下沉至 js/main.js,
  add.php 中的 removeViewer 统一更名为 removeViewerRow
- 删除死代码:imageUrl()(全项目无调用);cinemas.php 配色数组中本就会被
  array_slice 丢弃的 extra 颜色逻辑,简化为单条扁平 50 元素数组
- README 目录结构补充 lib/ 说明

验证方式:以便携 PHP 8.4 搭建 A/B 回归环境,播种固定数据后遍历 47 个
GET/POST 端点录制「状态码 + 响应体」。重构前后 42 个逐字节相同、2 个仅
上传文件名时间戳不同、3 个差异均为内联脚本下沉(已单独校验函数体逐字符
等价,剥离脚本后 HTML 标记完全一致)。24 个 PHP 文件语法检查全部通过。
This commit is contained in:
2026-09-21 12:56:30 +08:00
parent 40e1bc5e56
commit dd957d45bd
13 changed files with 1002 additions and 1022 deletions
+10 -2
View File
@@ -68,7 +68,13 @@
```
MovieLog_Server/
├── config.php # 核心:常量、DB 连接、建表与迁移、公共函数、统计与年度报告查询
├── config.php # 引导入口:错误报告、会话、路径常量、上传目录,并加载 lib/ 各模块
├── lib/ # 功能模块(被 config.php 统一引入,页面无需单独 require)
│ ├── db.php # DB 连接、建表、字段与历史数据迁移、默认管理员
│ ├── helpers.php # 输出转义、文件名、颜色校验、上传/删除文件、图片 URL
│ ├── auth.php # 登录校验、管理员账号增删改
│ ├── movies.php # 电影/影院读取、搜索,以及表单关联数据的解析
│ └── stats.php # 统计仪表板与年度报告查询
├── index.php # 首页:观影列表(瀑布流)+ 快捷搜索
├── add.php # 添加电影
├── edit.php # 编辑电影
@@ -88,7 +94,7 @@ MovieLog_Server/
├── fetch_movie.php # OMDb 代理接口,返回 JSON
├── test_crop.php # 开发调试页:验证 Base64 图片落盘是否正常
├── css/style.css # 全局样式
├── js/main.js # 少量公共脚本
├── js/main.js # 公共脚本(含各页面共用的表单联动函数)
├── assets/.gitkeep # 静态占位资源目录
├── db/movies.db # SQLite 数据库(运行时自动生成,不纳入版本控制)
└── uploads/ # 上传图片(运行时自动生成,不纳入版本控制)
@@ -98,6 +104,8 @@ MovieLog_Server/
└── avatars/ # 观影人头像
```
> 页面只需 `require_once 'config.php'``lib/` 下的模块会由引导文件统一加载,并保证依赖顺序(db → helpers → auth → movies → stats)。
---
## 数据库结构