相信作为PHP开发人员,肯定都至少会用一两种模板引擎,比如最为流行的Smarty等,但是又有多少人真正理解它们是如何工作的呢?说实话之前我一直不懂,也不曾想过要去研究和理解它,最近不知道哪根筋搭错了,突然对PHP模板渲染起了兴致,于是研究了下开源模板引擎Smarty的原理,并尝试着自己实现了一套模板引擎,下面给大家分享下:
先来看看,模板的组成
我们看到,整个模板由标签、变量和html代码三部分组成
而模板引擎要做的事情就是把里面的标签和变量解析成PHP可执行的代码,然后输出。于是问题来了,模板引擎要解决的问题是:
-
变量赋值
-
标签解析
-
输出
因此模板引擎必须提供三个核心方法,变量赋值的方法、标签解析的方法和输出方法,,取名为assign、handle_view_file、display。
变量赋值方法:通过一个_options的数组变量存储
标签解析方法:将模板里面的标签替换成PHP可执行的代码,通过正则来做的,核心函数为preg_replace
模板输出函数:将模板里面的标签替换成PHP代码,同时进行变量赋值,然后通过include函数执行并输出
当前这里里面也涉及到一些加载模板文件、加载编译文件、判断是否需要重新编译以及进行模板编译的函数。
至此,整个模板引擎的实现到此结束。
网友评论