昨天花了点时间写了个PHP的模板类, 自我感觉良好, 模板中使用php原生语法, 简单、实用、快速. 嘿嘿,源码+注释不到150行, 原来我已经到这里了阿~_~

LD 是极其痛恨 Smarty 和 ADOdb 的! 以前在公司简单作过测试, 一个页面八成的时间花在这两个大腕上, 惨. 这个DsTemplate + MagicDB + DsCache 应该可以完美替代 Smarty + ADOdb 的无耻组合了.

有种说法不置可否, “php 自己就是一个模板引擎” OR “php 的框架不过是建里在框架上的框架” . so 以其使用Smarty , 不如改用Blitz , 或者干脆自己写个简单的.

源代码地址: http://code.google.com/p/dscache/source/browse/trunk/DsTemplate/DsTemplate.class.php

示例:

1. 代码文件

 1 <?php
 2 /**
 3  * 测试DsTemplate
 4  *
 5  * @filesource testView.php
 6  * @package DsTemplate
 7  * @subpackage test
 8  * @version $id: 0.1, utf8, Sat Jan  2 16:39:27 CST 2010
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @example
13  *  
14  */
15 require_once ’../DsTemplate.class.php;
16
17 $template_path = dirname(__FILE__);  //模板文件所在目录
18 $template_file = ’testTemplate01.php; //模板文件
19
20 $view = new DsTemplate($template_path); //初始化模板对象, $template_path 可为空
21
22 $view->TEMPLATEPATH = $template_path; //重新定义模板目录, 可选
23
24 $view->abc = ’ABC;
25 $view->king = ’King\’s Zero Fourr; //设置变量 $abc, $king
26
27 $view->display($template_file); //显示最终结果,
28 //等同 echo $view->fetch($template_file);
29 ?>

2. 视图文件

 1 <?php
 2 /**
 3  * 用于测试的模板文件
 4  *
 5  * @filesource testTemplate01.php
 6  * @package DsTemplate
 7  * @subpackage test
 8  * @version $id: 0.1, utf8, Sat Jan  2 16:52:03 CST 2010
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @desc
13  *   模板中含有两个常量:
14  *     TP 模板根目录, 例 /srv/http/site/templates/
15  *     DS 目录分隔符, Windows下为 ‘\’ ,Linux下为 ‘/’
16  *  
17  */
18
19     echo ’Start showing….<br/>,_e($abc);
20     include(TP.testTemplate02.php);
21 ?>
22 <hr/>
23 <br/>包含其他模板时,多目录用: include(TP.’sidebar’.DS.’testSidebar.php’);

3. 视图文件

 1 <hr/>
 2 /**
 3  *  测试模板
 4  *
 5  * @filesource testTemplate02.php
 6  * @package DsTemplate
 7  * @subpackage test
 8  * @version $id: 0.1, utf8, Sat Jan  2 17:00:46 CST 2010
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @example
13  *  
14  */
15 <?php
16   echo ’<br/><br/>输出函数 _e($value, $escape) 可以完成自动转义, ,
17       ’<br/>比如: _e($king) = ,_e($king);
18 ?>