异常简朴的php模版类--DarasionTemplate
哈,好久不写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等工具进行可视化编辑的。
由于是一时兴起写成的东西,肯定经不起仔细的推敲,只是给大家提出一个想法,供大家讨论;假如真的能在实际中对你有所帮助,自然更好了。
返回类别: 教程 上一教程: PHP当中取得URL及物理路径的总结 下一教程: PHP脚本的10个技巧(3)
您可以阅读与"异常简朴的php模版类--DarasionTemplate"相关的教程: · 用PHP制作zip压缩程序 · Windows 环境下的PHP5 与 Apache 服务器的配置 · 十天学会php之第七天 · 用PHP调用Oracle存储过程 · 关于PHP中操作MySQL数据库的一些要注重的问题
|