php的简单模板类的详细介绍

php的简单模板类的详细介绍

我就喜欢简单:)

<?php

//QuickTpl类,用于模板
//lovered (GV) 于2004年4月11日创建

class QuickTpl
{
var $filename;//模板文件
var $content;//返回内容

//初始化模板文件,将所有内容读入
function QuickTpl($tplfilename)
{
$this->filename=$tplfilename;
$fd = fopen( $this->filename, "r" );
$this->content = fread($fd, filesize($this->filename));
fclose( $fd );
}

//替换标志位内容
function Assign($key,$value)
{
$this->content=str_replace("{".$key."}",$value,$this->content);
}

//替换标志块内容
function BlockAssign($block_name,$values)
{
//获得替换块的子模板
if(is_array($values))
{
ereg("{".$block_name."}.*{/".$block_name."}",$this->content,$regs);
$str_block=substr($regs[0],2+strlen($block_name),-(strlen($block_name)+3));

$str_replace="";
$block_replace="";

foreach($values as $subarr)
{
$str_replace=$str_block;
while ( list( $key, $val ) = each( $subarr ) )
{
$str_replace=str_replace("{".$key."}",$val,$str_replace);
}
$block_replace.=$str_replace;
}
$this->content=ereg_replace ("{".$block_name."}.*{/".$block_name."}",$block_replace,$this->content);
}
else
$this->content=ereg_replace ("{".$block_name."}.*{/".$block_name."}","none",$this->content);
}

//输出模板内容
function Show()
{
echo $this->content;
}
}
?>


以下是一个演示用的模板文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>{title}</title>
<link href="{cssfile}" rel="stylesheet" type="text/css" />
<meta http-equiv='Cache-Control' content='max-age=0'/>
<meta http-equiv='Cache-Control' content='no-cache' forua='true'/>
</head>
<body bgcolor="{bgcolor}">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr width="100%">
<td align="center">
<img src="{top_logo}" />
</td>
</tr>
<tr width="100%">
<td align="center">
{content}
</td>
</tr>
<tr width="100%">
<td align="center">
<select name="select">
{select}
<option value="{value}">{name}</option>
{/select}
</select>
</td>
</tr>
<tr width="100%">
<td align="center">
<img src="{bottom_img}" />
</td>
</tr>
</table>
{bottom}
</body>
</html>

以下是对模板调用的演示
<?php
$qt=new QuickTpl("template/pic_view.tpl");
$qt->Assign("title","标题");//替换{title}
$qt->Assign("cssfile","style.css");//替换{cssfile}
$qt->Assign("bgcolor","#EEEEEE");//替换{bgcolor}
$qt->Assign("top_logo","logo.gif");//替换{top_logo}
$select[]=array("name"=>"test1","value"=>"1");
$select[]=array("name"=>"test2","value"=>"2");
$select[]=array("name"=>"test3","value"=>"3");
$qt->BlockAssign("select",$select);
$qt->Assign("content","大家Hello~啊!");
$qt->Assign("bottom_img","bottom.gif");//替换{bottom_img}
$qt->ASsign("bottom","copyright ...");//替换{bottom}

$qt->Show(); //显示替换后的模板
?>