在自定义的模板引擎中,也添加了在模板文件中包含其他模板文件的功能。可以使用“”标记将子模板包含到当前模板中,还支持在子模板中再次包括另外的子模板。如下所示: 使用示例分析
通过在程序中加载模板引擎可以将前端语言与后端语言的代码分开。首先在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); 2、模板的设计
模板的设计不要出现任何的PHP代码,可以由前端人员来完成。在自定义的模板引擎中,规定了要到指定的目录中去寻找模板文件,这个特定的目录可以在创建模板引擎对象时指定,也可以使用默认的目录设置,默认可以将模板文件存放在当前目录中的“templates”目录下。本例共需要三个模板文件main.tpl、header.tpl和footer.tpl,都存放在这个默认的目录设置中。这三个模板文件的代码如下所示:
模板的头部文件header.tpl
模板的尾部文件footer.tpl
##### #####
主模板文件main.tpl
[td]
[td]
文件main.tpl是主模板文件,在该文件中使用和两个标记分别在该文件的顶部和底部,将独立的头部和尾部模板文件包含到这个主模板文件中。并在该文件中使用标记获取从PHP中动态分配过来的表名,以及使用双层标记嵌套,遍历从PHP中动态分配过来的在数据库中获取到的二维数组$Users,还在标记中使用条件选择标记组合,将数据中性别为“男”的表格背景设置为红色和一些其他判断。被包含进来的头部模板文件header.tpl和尾部模板文件footer.tpl也同样可以获取从PHP中动态分配给模板的数据 3、PHP程序设计
通过模板引擎的使用,PHP程序员在编写代码时,只需要PHP一种语言就可以了,不用再去使用HTML、CSS以及javascript等页面设计语言完成前端的工作了。下面是一个文件名为index.php的PHP脚本文件,和模板引擎类所在的文件mytpl_class.php在同一个目录下。代码如下所示:
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");
?>
在上面的PHP脚本文件中,通过PDO对象连接MySQL服务器,并获取用户表User中的全部记录,并以PHP的二维数组变量形式保存在变量data中。接着使用包含进来的当前目录下的“mytplclss.php”文件,创建并初始化模板引擎类的对象data中。接着使用包含进来的当前目录下的“mytplclss.php”文件,创建并初始化模板引擎类的对象tpl。再通过该对象中的assign()方法向模板分配一些数据,然后使用该对象中的display()方法载入模板文件main.tpl。并将模板中标记的特殊变量替换为从PHP中分配的动态数据,处理完毕以后输出模板页面。页面的输出结果如下所示
限于各种不同的条件限制,比如时间、经验,做一个自定义的PHP模板引擎是非常困难的。其实,需要的并不是重新构造一个PHP模板,而是选择一个最贴近自己的PHP模板加以改造
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!