/* @author: zhuyubing@gmail.com */
class Template{
var $code;
function Template($template){
$this->code = implode('', @file($template));
}
function assign($name,$var=null){
if(is_string($name) && is_string($var)){
$this->code = str_replace('{'.$name.'}', $var, $this->code);
} else if(is_array($var)){
list($this->code,$tmp,$end)=explode('',$this->code);
while(list(,$v)=each($var)){
$t=$tmp;$k2=$v2='';
while(list($k2, $v2) = each($v)){
$t = str_replace('{'.$k2.'}', $v2,$t);
}
$this->code .= $t;
}
$this->code .= $end;
} else {
while (list ($k2, $v2) = each($name)){
$this->code = str_replace('{'.$k2.'}', $v2, $this->code);
}
}
}
function display(){
echo $this->code;
}
}
?>
最简单的hello_world
准备一个php模版文件hello_world.html
{title}{title}
接下来就是模版的翻译工作了
include('../include/template.php'); //包含模版核心类文件
$tpl=new Template('hello_world.html'); //参数为模版路径和文件名,可以使用相对路径,也可以使用绝对路径
$tpl->assign('title',"hello world!"); //将标签{title} 替换成hello world
$tpl->display();
?>
模版中使用数组
test_array.html
{user} {email}
{user1} {email1}
模版处理文件
include('../include/template.php');
$tpl=new Template('test_array.html');
$user=array('user'=>'yubing','email'=>'test@sina.com');
$tpl->assign($user);
$tpl->assign('user1','jack');
$tpl->assign('email1','zhuyubing@gmail.com');
$tpl->display();
?>
简单的区块处理
block.html
User Name | |
{name} | {email} |
区块处理程序
block.php
include('../include/template.php');
$tpl=new Template('block.html');
$users=array( array('name'=>'jack','email'=>'test@example.com'), array('name'=>'tom','email'=>'tom@sina.com') ); $tpl->assign('users',$users);$tpl->display();?>模版包含测试
{title}{title}
{block}
模版包含处理程序<?phpinclude ('../include/template.php');$tpl=new Template('block.html');$users=array(array('name'=>'jack','email'=>'test@example.com'),array('name'=>'tom','email'=>'zhuyubing@gmail.com'),);$tpl->assign('users',$users);$block=$tpl->code;$tpl->Template('main.html');$tpl->assign('block',$block);$tpl->assign(array('title'=>'测试多模版文件'));$tpl->display();?>