- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ThinkTemplate模板引擎设计
ThinkTemplate模板引擎设计
在PHP开发的过程中,我们会接触到很多的模板引擎,包括FastTemplate、SmartTemplate、Smarty、tinybutstrong等,通常都是为了满足MVC开发模式的表现层需要,让显示和逻辑可以更好的分离(当然,现在的模板引擎越做越强大,甚至开始介入“M”)。
有了模板引擎,开发者可以专注于程序代码,设计者可以专注于页面的布局和视觉效果,不必再担心要在模板中嵌入各种程序代码。模板引擎的运作过程如下页图1所示。
ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用动态编译和缓存技术,而且支持自定义标签库。ThinkTemplate作为ThinkPHP框架的一个模板引擎插件提供,也可独立使用,因为ThinkPHP本身的设计是可以灵活替换模板引擎的。
ThinkTemplate的使用方法非常简单,直接创建ThinkTemplate对象后进行模板变量赋值然后进行渲染输出就可实现,然后就是定义模板标签和输出变量,和Smarty的用法比较类似。
而Smarty在渲染模板的时候必须指定模板文件名,在ThinkTemplate中如果不指定模板文件名,会按照系统设置的规则进行自动定位,例如,当前模块的某个操作可以定位成为以模块名称为目录下面的一个操作命名的模板文件。
在进行模板变量赋值的时候,可以对任何变量进行赋值,由模板标签来决定输出何种类型的。并且,赋值具有智能化和批量赋值,默认情况下第一个参数是要在模板中输出的变量名称,而第二个参数是变量的值,但是如果没有指定第二个参数,那么会对第一个参数进行判断,如果是索引数组,则自动进行批量赋值。作为安全性考虑,没有赋值的模板变量是不能用于输出的,但是有些特殊的模板标签可以输出系统的常量和系统变量例外。
评判模板引擎的优劣,并不仅仅在于外表看来的使用方式,更关键的在于内在的功能和效率。通常,模板引擎主要考虑以下几个方面:
◆ 执行速度
◆ 标签功能
◆ 扩展功能
执行速度是其中最关键的因素,毕竟这是应用的前提。一个模板引擎再好用,但是每次执行都需要几秒的话,那恐怕也无人问津。通常,我们会更加倾向于选择简洁快速的模板引擎,哪怕功能并不是那么强大(简洁不等于功能不足)。
要准确判断执行速度首先要了解解释型模板引擎和编译型模板引擎的区别。
所谓解释型就是每次将模板内容读入内存,并通过正则等方式分析字符串后对预置的标签进行替换,每次加载模板都需要重复这个过程。而编译型模板引擎是在第一次执行模板文件的时候进行一次编译(相当于一次解释分析过程),然后生成一个编译后的缓存文件,下次执行的时候就可以直接执行缓存文件,无需再次编译。
因此,在速度上面,编译型模板引擎在第一次运行模板的时候,速度会比解释型模板引擎略微缓慢,是因为有严格的编译(包括生成缓存文件)过程,这个过程根据模板引擎的复杂程度和模板页面标签多少速度有所不同。而当第二次执行的时候,因为最耗时的过程已经跳过了,编译型模板引擎的优势就体现出来了。这也是编译原理中所谓的“空间换时间”例证。
目前大多数的模板引擎都采用编译型,但是是否为编译型和模板功能并没有直接关系。ThinkTemplate属于编译型模板引擎,具备动态生成缓存文件的能力,无论是模板文件修改或者是缓存文件被删除,系统都会重新生成缓存文件。同时还可以设置模板缓存的有效时间,如每隔10分钟重新编译模板文件。并且在编译模板文件的过程中,如果发现存在很多相同的标签,ThinkTemplate并不会重复解析,而是会读取解析缓存。因此,无论在解析还是执行上面,效率都是比较高的。
模板引擎的一个重要因素就是模板标签的功能。Smarty模板引擎以功能最强大而著称,标签的易用性和完善性也是模板引擎的关键因素之一,最基本的功能包括注释、变量输出、条件控制、包含文件,而这些功能的体现都是借助于一系列的模板标签。这一部分是设计模板引擎的关键,也是工作量比较大的地方。
目前见到的模板引擎标签,大致分为特定标签和XML标签两种类型。特定标签通常是比较常见的类型,由模板引擎自身定义的一系列标签,用来满足变量输出和控制需要,通常具有私有化规则,标签类型各不相同。当然有些模板引擎是设计为可以定义起始标签的。
除了输出模板变量之外,模板引擎通常都会提供一个特殊的标签输出方式用来输出一些常量和系统变量。
和其他的模板引擎不同,ThinkTemplate的特定标签仅仅是用于变量输出功能,而把控制功能和复杂的标签功能放到XML模板标签里面。XML模板引擎在Java领域里面是非常常见的,在PHP模板引擎领域似乎并
您可能关注的文档
- SSR创造教育模式在高职创业教育中实践研究.doc
- SSR标记在糯玉米品种鉴定上应用.doc
- SSR模式在无机非金属材料专业本科生教学中应用.doc
- SSR标记在棉花遗传育种中应用.doc
- SSR法鉴定水稻两系杂交种纯度运用与探讨V.不同引物检测同一品种纯度准确性V.不同引物检测同一品种纯度准确性.doc
- SSR鉴定水稻两系杂交种纯度运用与探讨I.亲本和杂交种分别筛选引物适用性.doc
- SST湍流模型在强逆压流模拟中应用.doc
- ST2与冠心病研究进展.doc
- STAAD.PRO软件在国外工程钢结构管廊设计中应用.doc
- STAAD软件在煤气柜设计中应用.doc
- 2026年禁毒防毒题50道1套.docx
- 2026年国家电网招聘之文学哲学类考试题库300道及答案【考点梳理】.docx
- 2026年教师招聘之幼儿教师招聘考试题库300道【全优】.docx
- 2026年禁毒防毒题50道及1套参考答案.docx
- 2026年国家电网招聘之文学哲学类考试题库300道(易错题).docx
- 2026年国家电网招聘之文学哲学类考试题库300道带答案(黄金题型).docx
- 2026年国家电网招聘之经济学类考试题库500道精编.docx
- 2026年国家电网招聘之公共与行业知识考试题库500道附答案(a卷).docx
- 2026年国家电网招聘之文学哲学类考试题库300道附参考答案(精练).docx
- 2026年大学生计算机考试题库200道含答案【名师推荐】.docx
文档评论(0)