PHP的自定义模板引擎

2019-05-01 20:36:07王旭

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);

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 style="width:200px;margin: 0 auto;">##### <{$author}> #####</div>  
 </body>
</html>

主模板文件main.tpl

<{include 'header.tpl'}>
 <table border="1" align="center" width="500">
  <{ loop $users $user }>
   <tr> 
    <{loop $user $u }>

      <{if $u == "男" }>
       <td style="color:green">
      <{elseif $u == "女"}>
       <td style="color:red">
      <{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中动态分配给模板的数据

相关文章 大家在看