非常简单的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开发中实用的两条sql
- · 使用php 5时MySQL返回乱码的解决办法
- · PHP中静态页处理动态内容的思路
- · FreeBSD下的vi支持中文显示和编辑
- · PHP5在Apache下的两种模式的安装
- · 用php实现qq挂机的程序
- · PHP禁止图片盗链
- · PHP禁止图片盗链
- · PHP 实现的字典序排列算法
- · 用php实现真正的连动下拉列表
- · php如何更好更有效的实现-----用户注册页面
- · PHP和ASP中关于转向函数的区别
- · php删除文件夹及其文件夹下所有文件
- · php用流方式制作缩略图
- · 限制IP访问的思路和PHP代码
- · php生成SessionID和图片校验码的思路和实现
- · 带你走进PHP的世界 PHP新手上路之一
- · php优化及高效提速问题小结
- · 根据来路是否为搜索引擎来决定是否跳出弹窗代码
- · Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
- · php版的验证码程序
- · 如何实现日期比较,暨实现显示5天内,显示10天内的记录
- · 使用 php4 加速 web 传输
- · PHP当中取得URL及物理路径的总结
- · 如何在自己的主页上使用PHP
- · PHP中操作MySQL的一些要注意的问题
- · PHP中操作MySQL的一些要注意的问题
- · PHP使用无限生命期Session的方法
- · Win9x/ME下Apache+PHP安装配置
- · 通过PHP来实现登录验证码功能
- · PHP设计福利彩票幸运号码自动生成器
- · 一个全面获取图象信息的函数getImageInfo()
- · 发布一个最强的PHP通用分页类
- · Eclipse+JBoss+MySQL开发环境设置全攻略
- · PHP开发中文件操作疑难问答
- · PHP与JavaScript对多项选择的处理
- · PHP中一个中文字符串截取函数
- · PHP实现多文件上载的系统程序
