PHP的自定义模板引擎(4)

<{if($var=="red")}> <p>这是“红色”的字</p> <{elseif($var=="green")}> <p>这是“绿色”的字</p> <{else}> <{if($size=20)}> <p>这是“20px”大小的字</p> <{/if}> <{/if}>

在自定义的模板引擎中,也添加了在模板文件中包含其他模板文件的功能。可以使用“<{include‘子模板文件名'}>”标记将子模板包含到当前模板中,还支持在子模板中再次包括另外的子模板。如下所示:

<{include 'other.tpl' }>

使用示例分析

通过在程序中加载模板引擎可以将前端语言与后端语言的代码分开。首先在PHP程序中获取数据库中存储的数据,再通过加载模板引擎将数据分配出去,然后将模板文件再通过模板引擎加载并处理后输出。所以PHP程序只是创建动态数据,加载模板引擎并将动态数据分配给模板,完成了PHP程序的工作。而模板的设汁也只需要前端工程师独立完成,使用HTML、CSS及javascript等前台页面设计语言编写。另外,在模板文件中还需要使用模板引擎可以解析的标记,将PHP中分配过来的动态数据在模板中引用

1、数据库的设计

假设数据库服务器在“localhost”主机上,连接的用户名和密码分别为“admin”和“123456”,在该服务器上创建一个名为“mydb”的数据库,并在该数据库中创建一个名为“User”的用户表。创建该表的SQL査询语句如下所示:

CREATE TABLE User( id SMALLINT(3) NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL DEFAULT '', sex VARCHAR(4) NOT NULL DEFAULT '', age SMALLINT(2) NOT NULL DEFAULT '0', email VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (id) );

用户表User创建完成以后,接着可以向该表中插入一些数据作为示例演示使用,SQL查询语句如下所示:

INSERT INTO User (name,sex,age,email) VALUES ("a","男",27,"a@a.com"), ("b","女",22,"b@b.com"), ("c","女",30,"c@c.com"), ("d","女",24,d@d.com);

PHP的自定义模板引擎

2、模板的设计

模板的设计不要出现任何的PHP代码,可以由前端人员来完成。在自定义的模板引擎中,规定了要到指定的目录中去寻找模板文件,这个特定的目录可以在创建模板引擎对象时指定,也可以使用默认的目录设置,默认可以将模板文件存放在当前目录中的“templates”目录下。本例共需要三个模板文件main.tpl、header.tpl和footer.tpl,都存放在这个默认的目录设置中。这三个模板文件的代码如下所示:

模板的头部文件header.tpl

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> <{$title}> </title> </head> <body>

模板的尾部文件footer.tpl

<div>##### <{$author}> #####</div> </body> </html>

主模板文件main.tpl

<{include 'header.tpl'}> <table> <{ loop $users $user }> <tr> <{loop $user $u }> <{if $u == "男" }> <td> <{elseif $u == "女"}> <td> <{else}> <td> <{/if}> <{$u}></td> <{/loop}> </tr> <{/loop}> </table> <{include 'footer.tpl'}>

文件main.tpl是主模板文件,在该文件中使用<{include"header.tpl"}>和<{include"footer.tpl"}>两个标记分别在该文件的顶部和底部,将独立的头部和尾部模板文件包含到这个主模板文件中。并在该文件中使用<{tableName}>标记获取从PHP中动态分配过来的表名,以及使用双层<{loop}>标记嵌套,遍历从PHP中动态分配过来的在数据库中获取到的二维数组$Users,还在<{loop}>标记中使用条件选择标记<{if}>组合,将数据中性别为“男”的表格背景设置为红色和一些其他判断。被包含进来的头部模板文件header.tpl和尾部模板文件footer.tpl也同样可以获取从PHP中动态分配给模板的数据

3、PHP程序设计

通过模板引擎的使用,PHP程序员在编写代码时,只需要PHP一种语言就可以了,不用再去使用HTML、CSS以及javascript等页面设计语言完成前端的工作了。下面是一个文件名为index.php的PHP脚本文件,和模板引擎类所在的文件mytpl_class.php在同一个目录下。代码如下所示:

<?php //包含模板引擎类 include "mytpl.class.php"; //创建模板引擎对象 $tpl = new Mytpl; //连接数据库 $pdo = new PDO("mysql:host=localhost;dbname=mydb", "admin", "123456"); //执行SQL语句 $stmt = $pdo -> prepare("select id, name, sex,age,email from User order by id"); $stmt ->execute(); $data = $stmt -> fetchAll(PDO::FETCH_ASSOC); //这是从数据库获取的动态数据,需要在模板中显示 $tpl->assign('title',"自定义模板引擎");$tpl->assign('auto',"小火柴"); $tpl->assign('users',$data); $tpl -> display("main.tpl"); ?>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/366e8b7056e4f2739098a5c5ebf0fb82.html