分享
 
 
 

非常简单的php模版类--DarasionTemplate

王朝php·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

哈,好久不写blog了,今天就随便写点吧,怎么这blog的编辑器成了FCK的了呢?

突发灵感,写了一个非常简单的模版类,虽然没啥先进的东西,不过我总认为灵感也是需要积累的。

功到自然成嘛。模版类文件代码:

<?php

/**

* 作者:darasion

* 版权:使用或转载注明作者

*

*/

class DarasionTemplate{

var $template = "";

var $VAR = array();

var $className = "DarasionTemplate";

/**

* 设定 参数/模版

*

*/

function setVar($name,$value){

if(strtolower(get_class($value))==strtolower($this->className)){

$this->VAR[$name]=$value->parse();

}else{

$this->VAR[$name]=$value;

}

}

/**

* 获得 参数/解析后的模版

*

*/

function getVar($name){

if(isset($this->VAR[$name])){

return $this->VAR[$name];

}

}

/**

* 设定模版路径

*

*/

function setTemplate($tpl){

$this->template = $tpl;

}

/**

* 输出html

*

*/

function out(){

echo $this->parse();

}

/**

* 解析模版

*

*/

function parse(){

ob_start();

include_once($this->template);

echo $content=ob_get_contents();

ob_end_clean();

return $content;

}

}

?>

这个模版类能够支持模版的嵌套,只要将子模版类的实例当作参数设置给父模版即可

使用方法:

test.php

<?php

include("DarasionTemplate.php");

//建立父模版

$tpl=new DarasionTemplate();

$tpl->setTemplate("inc/__tpl.php");

//父模版参数

$tpl->setVar("title","参数title");

$tpl->setVar("a","参数a");

$tpl->setVar("b","参数b");

//建立子模版

$tpl1=new DarasionTemplate();

$tpl1->setTemplate("inc/__tpl1.php");

//设置子模版参数

$tpl1->setVar("kk","kk");

//将子模版放入父模版中

$tpl->setVar("c",$tpl1);

$tpl->out();

?>

//父模版:__tpl.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title><?php echo @$this->getVar("title");?></title>

</head>

<body>

<?php echo @$this->getVar("a");?>

<?php echo @$this->getVar("b");?>

<?php echo @$this->getVar("c");?>

</body>

</html>

//子模版:__tpl1.php

<table width="200" border="1" bordercolor="#000000">

<tr>

<td><?php echo @$this->getVar("kk");?></td>

<td><?php echo @$this->getVar("kk");?></td>

<td><?php echo @$this->getVar("kk");?></td>

</tr>

</table>

输出的html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>参数title</title>

</head>

<body>

参数a 参数b

<table width="200" border="1" bordercolor="#000000">

<tr>

<td>kk</td>

<td>kk</td>

<td>kk</td>

</tr>

</table>

</body>

</html>

在这个模版类中,使用了与其他模版类不同的方法来实现:

1、把其他模版类中的类似{a}的换成了<?php echo @$this->getVar("a");?>而且子模版和父模版中他们的形式相同。

2、如果需要循环,只需要写php的循环代码即可,如:foreach()。

这样做的好处是:

1、省去了字符串的替换过程(一大堆的正则总是看不懂,呵呵,给自己想了个偷懒的办法)。

2、省去了重新学习一大堆说是标签还不是标签的东西的过程(还是因为自己懒)。

3、更重要的好处是,用这个模版类对应的模版,是完全可以用Dreamweaver等工具进行可视化编辑的。

由于是一时兴起写成的东西,肯定经不起仔细的推敲,只是给大家提出一个想法,供大家讨论;如果真的能在实际中对你有所帮助,自然更好了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有