繁体中文
设为首页
加入收藏
当前位置:PHP技术首页 >> PHP基础 >> phplib里带的模板功能的确非常好用,但有个致命的小错误需要更正!

phplib里带的模板功能的确非常好用,但有个致命的小错误需要更正!

2005-02-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:PHPlib里带的template.inc包含了一个模板类,用它可以实现程序代码和 界面的分离,给程序设计和界面设计带来了极大的方便,而且它的实现比快速 模板要好。但有一个致命的小错误导致set_block()函数不能正常使用,...

PHPlib里带的template.inc包含了一个模板类,用它可以实现程序代码和

界面的分离,给程序设计和界面设计带来了极大的方便,而且它的实现比快速

模板要好。但有一个致命的小错误导致set_block()函数不能正常使用,而这个

函数是非常重要的,它在处理重复块时显得非常的好用。

下面通过一个最简单的例子来讲解用法及解决方法:

模板文件:page1.iHTML(名字你可以随便取,后缀iHTML是一种习惯用法)

{TITLE}

ID: {ID}

NAME: {NAME}

处理文件:test.PHP

set_file("page1","page1.iHTML");

# 提取名称为TBK的块,让它指向tbks的引用

$t->set_block("page1", "TBK", "tbks");

# 替换标题TITLE变量

$t->set_var("TITLE","my test of template");

# 定义ID和NAME,然后把TBK附加到tbks

for ($i=1; $iset_var(array("ID" => $n, "NAME" => $nn));

$t->parse("tbks", "TBK", true);

}

# 最后输出页面

$t->pparse("out", "page1");

?>

但是这个例子是不能运行的,网友Openball曾给出一种解决方案,把

$t->set_block("page1", "TBK", "tbks");改为$t->set_block("page1", "TBK", "{tbks}");注意最后的“{}”符号,这样的确可以用了,

但有更好的解决方案,打开template.inc文件,找到set_block()函数里的

这句话:$str = preg_replace($reg, "{$name}", $str);呵呵,看到没,

PHPlib已经做了处理了,但忘了(我猜的:)转义“{”,因此把这句话改

为:$str = preg_replace($reg, "\{$name}", $str);就可以了。这样,

PHPlib自带的例子也可以用了,而且这种方法似乎更规范些,不知各位的

已经如何,具体的还可以参照我在实际中用的模板和程序,欢迎交流经验

模板:http://myjingpin.com/tpl/v1/show.HTML

程序:http://myjingpin.com/app/v1/show.PHP?mid=Flash

责任编辑:admin
相关文章