唯一案例 · ThinkPHP 8
行业协会官网
原站用纯 PHP 实现(GBK 编码,原生模板 + PDO 直连);演示站用 ThinkPHP 8 重写(路由 / 控制器 / ORM / 中间件)。版式、URL 形态、后台增删改查完全一致,原站不停机、数据不丢。
重建范围
原站是纯 PHP 实现:GBK 编码、原生模板、PDO 直连 SQLite。内容、栏目、律所、律师以及所有扩展字段整体迁入 ThinkPHP 8,前台模板原样保留,所以版式一处也没变。
硬约束
- 重建全程原站不能停机,也不能被改动
- URL 形态必须继续可用,包括分页与搜索参数
- 后台行为要一致:每页条数、筛选项、编辑页字段
怎么证明一样
把原站和重建站逐页抓下来对比:DOM 节点数、文本块、标题。3,183 页,差异为 0。
原站与演示站
原站 · 纯 PHP
- 原生 PHP 模板,页面里直接写查询
- PDO 直连 SQLite,SQL 散在页面
- 单入口手写路由 + 正则改写
- 登录判断写在每个后台文件开头
演示 · ThinkPHP 8
- 路由规则 + 控制器分派,URL 形态一条条声明
- think-orm 模型与查询构建器,视图不碰 SQL
- 控制器中间件统一鉴权,Validate 统一校验
- 模板仍用原生 PHP —— 为了 1:1 复刻版式
技术栈
| PHP 8.5 | 纯 PHP 模板 + 框架分层 |
|---|---|
| ThinkPHP 8 | 路由、控制器、模型、中间件、验证器 |
| SQLite / MySQL | 单机站点默认 SQLite,需要时切 MySQL |
| Nginx + PHP-FPM | 独立站点池,静态资源长缓存,HTML 不缓存 |
打开演示 ↗
演示库与原站物理隔离;原站只读,未做任何写入。