代码分层的思想

PHP 作为轻巧灵活的脚本语言,非常适合 Web 开发这种开发周期短、需求变化快、强调用户体验的需求和业务。PHP 开发早期,通常都是 PHP 代码与 HTML 混写,代码中充斥着数据库操作、逻辑判断、HTML 代码生成,甚至 JavaScript 代码等。当项目规模不大时,这种编程风格能够很快地完成需求。但是一旦项目规模扩大后,再加上前端逻辑越来越复杂,这种完全混写的方式必将带来代码可读性差和后期维护困难等问题。

于是,代码分层有两个要点:

  • 实现数据生成和显示的分离
  • 实现 PHP 代码和 HTML 代码的分离

一个简单的模板引擎骨架

  • 模板引擎配置化
  • 支持缓存
  • 使模板文件进一步脱离 PHP 语法

基础类骨架

  1. 检查是否存在模板文件,如果不存在则退出
  2. 检查对应的模板是否已经被编译,如果未被编译,引入编译工具类,对其进行编译
  3. 读取编译后的文件

编译类骨架

编译类骨架较为简单,编译的过程实际上就是将字符串输出到某个文件中。

模板引擎的编译

  1. 实现变量标签
  2. 实现 foreach、if…else 标签
  3. 对 PHP 原生语法的支持

模板缓存机制

把模板编译后的 PHP 文件所执行的结果保存为 HTML 静态文件,在下一次请求到来时,直接给出 HTML 文件,而省去编译和执行的过程。

调试和缓存清理

  • 路径。相对路径比较容易导致路径混乱,因此为了程序的健壮性,我们在模板中使用绝对路径来定位文件。
  • 对于模板文件夹和缓存文件夹的处理是不同的。如果模板文件夹不存在,模板文件也就不存在,此时应该给出明确的错误提示;而当缓存文件夹不存在时,应该新建一个文件夹。

参考书籍: 《PHP 核心技术与最佳实践》