PHPLib Template笔记

将网络上的资料汇集在一起再添加一些自己的分析。一边学习一边记录一些笔记。这样可以在以后温古
而知新
以下是一些关键函数:部分函数说明摘自网络
Template($root = ".", $unknowns = "remove")
构造函数.可以有两个可选的参数.第一个参数设定模板所在目录,第二个参数设定未知变量的处理方式.
set_file($varname, $filename = "")
该函数为一个函数的初值定义一个文件名,可以用一个$varname/$filename对或者一系列的$varname/$filename对来调用它.这些文件只有在需要时才会被加载.
set_block($parent, $varname, $name = "")
变量$parent可包含一个以$varname命名的变量块.该函数会从$parent中把这个块删除,然后用一个名称为$name的变量代替它.如果$name被忽略了,那么它将被假定为和$varname一样
set_var($varname, $value = "")
该函数设定一个变量的初值.可以用一个$varname/$value对或者一系列的$varname/$value对来调用它.
parse($target, $varname, $append = false)
该函数替代以$varname为名中的所有已定义变量的值,并存储或附加在以$target为变量名的结果中.
p($varname)
该函数将输出以$varname命名的变量的最后版本的值.
以下是一些关键属性:
可调用的实例变量

classname字符串(String).类序列帮助:类名称.
debug整型(Integer). 标识:设为1可观察所有变量赋值情况,设为2可观察可调用变量,设为4可观察内部函数调用.
unknowns为"keep","comment", "remove" (默认)三者之一.决定了在输出环节上如何处理模板中未完成处理的变量名称.如果设为"keep",这些变量名称将原封不动的保留下来.如果设为"comment",那么会在报错的同时,将未完成处理的变量名
称全部转换成HTML的注释.如果设为"remove",未完成处理的变量名称便会被悄然删除(这也是默认的情况).
halt_on_error = "yes"为"yes"(默认), "report", "no"三者之一. 决定了模板类错误处理方式.如设为"yes"(默认),错误就会被报告,程序执行也随之中断. 如果设为"report",错误同样会被报告,只是程序继续执行,并返回"false".如果设为"no",错误就被屏蔽掉,程序执行结果返回"false"
last_error = ""最近的一次错误信息保存在这个变量里面.

内部实例变量

file字符串散列.一个转换表,可以把变量名转换成与之相对应的文件名.
root字符串 (路径名). 模板文件被加载的主目录.
varkeys字符串散列.一个转换表,可以把变量名转换成与之相对应的正则表达式.
varvals字符串散列.一个转换表,可以把变量名转换成它们各自的varkey对应的替代值.


一个完整的例子:
两个模板文件如下
page.html(大模版)
<html>
<head><title>{PAGETITLE}</title></head>
<body bgcolor="#ffffff">
<table border=1 cellpadding=4 cellspacing=0 bgcolor="#eeeeee">
<tr>
<td colspan=2><h1>{PAGETITLE}</h1></td>
</tr>
<tr>
<td>{OUT}</td>
<td>Content<br>{UNDEFINED_VARIABLE}</td>
</tr>
</table>
</body>
</html>

box.html(大模板中的小块-循环模版)
<!-- start box.html -->
<table border=1 bgcolor="#cccccc" cellpadding=4 cellspacing=0>
<tr>
<td colspan=2><b>{TITLE}</b></td>
</tr>
<!-- BEGIN row -->
<tr>
<td>{NUM}</td>
<td>{BIGNUM}</td>
</tr>
<!-- END row -->
</table>
<!-- end box.ihtml -->

index.php(主文件)
<?php
include_once("include/template.php");
/* 生成模板类的一个实例对象 */
$t = new Template("template", "keep");
/* $t->debug = 7; */ /* 激活全部调试 */
/* 将两个变量定义为文件值 */
$t->set_file(array(
     "page" => "page.html",
     "box" => "box.html")); 
//把box变量中的row块替换为以rows为名的变量,同时增加一个row变量并保寸此块的值(其实就是字符串替换)
$t->set_block("box", "row", "rows");
for ($i=1; $i<=3; $i++) {
$n = $i;
$nn = $i*10;
/* 给NUM和BIGNUM赋值 */
$t->set_var(array("NUM" => $n, "BIGNUM" => $nn));
/* 替换row中的NUM和BIGNUM
* 把结果附加到rows */
$t->parse("rows", "row", true);
}
/*设置两个变量的值*/
$t->set_var(array("TITLE" => "Testseite",
"PAGETITLE" => "hugo"));
/*
parse()
该函数替代以$varname为名中的所有已定义变量的值,并存储或附加在以$target为变量名的结果中.
如果$varname为变量名数组,$append就会被屏蔽.以$varname为名的变量被连续的替代,每一个替代步骤的结果都存在$target里.最终的替代结果
可在以$target为名的变量里获得,可以视为下一个$varname的一个中间处理环节.
*/
/* 分别替换box和page里的所有变量,
结果存储在OUT里面 */
$t->parse("OUT", array("box", "page"));
/* 打印OUT*/
$t->p("OUT");
?>
<hr>
输出未定义变量:
<?php
print @implode(", ", $t->get_undefined("OUT"));
?>
参考文章:
http://www.4kiki.net/php_lib_template/index.html (PHPlib Template 模板类中文文档 第一版)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值