用Smarty模板引擎对PHP业务与逻辑进行分离

首先是普通PHP里面可能混编着HTML代码与PHP代码,这样不利于维护。有的还需要在上面做多次循环html代码,故此想着这两家能分开
1.png
首先如上图所示就是一个普通PHP文件,但是,下面我将信息全部存入数组,这主要是顶部导航栏,所以说这个是整个站点顶部的通用部分,所以换成任何页面,引入的都是这个 header.php,但用了模板引擎后,header.php 便不复存在,只存在一个 header.html,这个 header.html就是我网站顶部的通用导航栏,里面有固定的格式,比如 title部分。如下两张图所示红框区域:

用数组收集信息的好处是,每当变化主题页面,也就是不管页面内容发生什么巨大变化,反正我用的是同一个导航栏同一个
header.html ,所以,每个PHP都能用数组进行信息的收集与归类,使用相同的变量对模板进行输出,而模板则设置好等待变量等待变化即可。如下图所示:
888.png
再看看class.php的,我首先设定一下PHP逻辑部分与模板部分的通信口“即绑定模板文件”,如下所示,我用的是 Smarty模板引擎,是一个框架。
4.png
设定好路径之后,我们对 class.php 的页面设置一下信息,如下数组:
2.png


不好意思,上面数组放错图了,我的锅!(如下补图)
999.png

然后将数组赋给一个变量,将此变量以 smarty的方式输送给绑定的模板:(如下图)
3.png
其中,assign函数是模板的函数,函数有两个参数,左侧用双引号或者单引号括起来,是 string 类型的字符串常量,具体的也可用其他(String)类型的变量替代,我们知道PHP是弱类型语言,讨论这个没意义。而左侧这个字符串起到的效果,对PHP来说“毫无效果”,对模板来说,他就是模板变量,包括数组变量。再说一下右侧,右侧的就是当前PHP页面中的其他变量,你需要将PHP中的信息输出到模板,那么这个变量就起到转化作用,将右侧的变量转化为左侧的模板变量并输出至模板。

然后再看看 class.html模板,我刚才说了,header是通用的头部文件,故此现在使用模板语法,在class.html 中 include 'header.html' 文件,而 header.html 文件中的截图在上面展现过了
5.png
再看看 smarty还有什么功能,(如下图),有if...else,section等,section 是smarty 里面一个最好用的循环,相比for之类,他能够将PHP从数据库查找的多条数据遍历好的结果至模板展现,附加价值非常高,即循环也输出变量,并按二维数组(或者理解为数据库的条数)进行输出,循环一次便向下一次。
6.png
其实smarty的语法很多,基本上可以认定为一个新的语言,但是,只需要了解一些特殊的,因为,html模板我讲求的是尽量少的逻辑,所以,再多的模板语法恐怕也不适用。