← 返回首页

INSIDE THE STORY

PHP 7.4 时代的轻量 CMS 实践

PHP 7.4 时代的轻量 CMS 实践
在很多技术讨论里,PHP 似乎总是被当作“上一个时代”的选择。但如果你要做的是一款部署在普通虚拟主机、由个人长期维护的内容系统,它依然是非常务实的基础设施。 ## 薄框架,不等于没有结构 不使用 Laravel 这样的全栈框架,并不意味着把代码都写进一个 `index.php`。相反,越小的系统,越需要清楚的分层: - **入口层**:负责路由、会话、错误处理。 - **领域层**:文章、分类、评论、媒体,各自拥有明确的职责。 - **接口层**:后台通过 JSON API 与前端交互,而不是直接渲染页面。 - **呈现层**:前台主题与后台界面彼此独立。 这样的结构没有魔法,但每一层都可以被单独理解和替换。 ## 兼容 PHP 7.4 的几个细节 宝塔面板上仍有大量 PHP 7.4 环境。为了保证兼容,需要刻意避开一些新语法: - 不使用 `match`、构造器属性提升、`str_contains`; - 不依赖枚举与只读属性; - 对 `PDO` 的返回类型保持宽容,因为不同驱动可能返回字符串; - 时间计算尽量交给 PHP,而不是数据库方言函数。 > 兼容性不是保守,而是对部署环境的尊重。 ## 数据库只做它擅长的事 内容系统的大部分查询都很简单。真正需要小心的是分页、搜索与关联数据: 1. 分页参数必须强制转为整数,避免把用户输入拼进 SQL; 2. 标签、分类使用关联表,避免在文章表里存逗号分隔的 ID; 3. 列表页一次性取回标签,避免 N+1 查询; 4. 所有写入使用预处理语句,并统一时间格式。 ![系统的骨架](theme:img/covers/detail-1.svg "把复杂度留在结构里,而不是散落在代码中。") ## 安全是默认值 后台登录、CSRF、上传校验、输出转义,这些不应该等到上线前才补。把它们做成基础设施的一部分,后续每加一个功能,都会自然继承这些保护。 轻量不是省掉安全,而是让安全足够简单,简单到不会忘记。