title : 一个方便易用的小模板处理类
author : stangly wrong注:本模板类,经测试尚有bug,估计还很多.如果你发现的话,请贴此,或来信告之,不胜感激. 【程序编程相关:建立自己的3D静态模型文件】
【推荐阅读:给年轻工程师的十大忠告】 【扩展信息:BSP树(1)】 在php中使用模板技术,一直是一个受欢迎的技术.自从2001年开始,php的很多爱好者,在php中引用了mvc开发模式后,模板技术就更为火热.网上很多出名的模板引擎,如phplib的template.fasttemplate.easytpl.btemplate以及现在受php.net推宠的smarty模板引擎.
我个人非常喜欢钟爱那些短小精悍的php代码,像smarty这些动折2000多行的代码实现的模板引擎,一般不是我的钟爱.
前一段时间,看了phpe.net上有一篇文章叫<<超越模板引擎>>感觉那个老外所说确实极其有道理.他这样说:smarty的目标是"把业务逻辑从表现中分离出来"而不是"php代码与html代码的分离".但是smarty确实也太庞大了,如果我在使用smarty的话,我会感觉smarty会不会影响php代码执行效率,首先在解析2000多行的smarty代码就可能会带来很大延迟.
受<<超越模板引擎>>一文作者影响,我感觉到php本身就是一个嵌入式的脚本语言,如果我们能够使用用简单的php代码写成的模板,而在运行时直接将他include进来那不是更为快捷?比如像如下这个样子的代码:
my name is {myname}.
为什么我们不直接写成 my name is <?=$myname?>. 这样样子呢? 还有模板里常用的列表,其实也是简单的loop <!-- begin user_list --> user id : {var0} user name : {var1} <!-- end user_list --> 为什么我们不直接写成如下的代码 php: foreach ( $user_list as $user ) { ?> user id : [´id´]?> user name : [´name´]?> } ?> 其实早在一年前,我就尝试用这种方法去做一些企业与政府的webos,只是当时,还没有意识这样做带来的好处.只是感觉这样的模板我不需要单独的代码去处理他,只是简单的include一下就ok了.而且,我记得当时在做这些用php语言直接写出的模板的时候,非常快捷,以至于到后来,参与开发几个美工都因此对php的程序开发,发生了很大的兴趣,开始学习php的脚本语言.最近又受<<超越模板引擎>>一文影响,所以决定根据他的思想去实现一个模板处理的类,经过了二三天的每天像榨水果汁一样挤出的几个小时去完成了一个模板类.现在张贴在此,以便能有志同道合朋友能够与我一起讨论.
考虑了现在带会经常使用{name}的这样的标记去做模板,所以我写一个简单的parsehtm()的方法,去解析这样的文件,将其转换为<?=$name?>这样的php模板.然后将转换后的文件存贮到相应的cache目录中去,然后提供一个parsephp()方法去简单的include文件然后在主程序中echo输出.在实现的时候,我为了简化调用方法.使用了一个parse()方法去呼叫上述两个私有方法.
以下是代码示例:
首先给出目录结构:
\ 根目录 ├─cache 存放php模板缓存的文件 ... 下一页