http://baike.baidu.com/link?url=HmXfdJBv3zpCdnZPeaSmZmqDBHlyTBnz9Rmb5it-jf1_NLHfaku6_i8ssUYbnaTQEBD4vARnPpKuC7UtrOmWQ_
- 中文名
- php模板引擎
- 解 释
- 一种HTML脚本语言
目录
- 1 由来
- 2 类型
- ▪ smarty
- ▪ Template Lite
- ▪ TinyButStrong
- ▪ FXL Template
- ▪ H2o
- ▪ ns-template
- ▪ Blade
如果你正在设计一个交互式的网站,你一定会关注两个主要的问题,就是界面美工和应用程序。在大多数的项目组中,开发一个Web程序都会出现这样的流程:计划文档提交之后,界面设计者(美工)制作了网站的外观模型,然后把它交给后台程序员。程序员使用PHP实现程序逻辑,同时使用外观模型做成基本架构,然后工程被返回到HTML页面设计者继续完善。就这样工程可能在后台程序员和页面设计者之间来来回回好几次。由于后台程序员不喜欢干预任何有关HTML标签,同时也不需要美工们和PHP代码鬼混在一起。美工设计者只需要配置文件,动态区块和其他的界面部分,不必要去接触那些错综复杂的PHP代码。因此,这时候有一个很好的模板支持就显得很重要了。
PHP是一种HTML内嵌式的在服务器端执行的脚本语言,所以大部分PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。虽然通过MVC设计模式可以把程序应用逻辑与网页呈现逻辑强制性分离,但也只是将应用程序的输入、处理和输出分开,网页呈现逻辑(视图)还会有HTML代码和PHP程序强耦合在一起。PHP脚本的编写者必须既是网页设计者,又是PHP开发者。但实际情况是,多数Web开发人员要么是精通网页设计,能够设计出漂亮的网页外观,但是编写的PHP代码很糟糕;要么仅熟悉PHP编程,能够写出健壮的PHP代码,但是设计的网页外观很难看。具备两种才能的开发人员很少见。
现在已经有很多解决方案,可以将网站的页面设计和PHP应用程序几乎完全分离。这些解决方案称为"模板引擎",它们正在逐步消除由于缺乏层次分离而带来的难题。模板引擎的目的,就是要达到上述提到的逻辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而网页设计师则可专注于网页排版,让网页看起来更具有专业感。因此,模化引擎很适合公司的Web开发团队使用,使每个人都能发挥其专长。
模板引擎技术的核心比较简单。只要将美工页面(不包含任何的PHP代码)指定为模板文件,并将这个模板文件中有活动的内容,如数据库输出、用户交互等部分,定义成使用特殊"定界符"包含的"变量",然后放在模板文件中相应的位置。当用户浏览时,由PHP脚本程序打开该模板文件,并将模板文件中定义的变量进行替换。这样,模板中的特殊变量被替换为不同的动态内容时,就会输出需要的页面。
在Web开发中分离应用程序的业务逻辑和表现逻辑,是我们使用模板引擎的主要目的。这是因为有以下两个重要原因:
美工设计人员可以与应用程序开发人员独立工作,因为应用的表现和逻辑并非密不可分地纠缠在一起。此外,因为大多数模板引擎使用的表现逻辑一般比应用程序所使用编程语言的语法更简单,所以,美工设计人员不需要为完成其工作而在程序语言上花费太多精力。
可以使用同样的代码基于不同目标生成数据,例如生成打印的数据、生成Web页面或生成电子数据表等。如果不使用模板引擎,则需要针对每种输出目标复制并修改代码,这会带来非常严重的代码冗余,极大地降低了可管理性。
目前,可以在PHP中应用的并且比较成熟的模板有很多,例如Smarty、PHPLIB、IPB、xingTemplate等几十种。使用这些通过PHP编写的模板引擎,可以让你的代码脉络更加清晰,结构更加合理化。也可以让网站的维护和更新变得更容易,创造一个更加良好的开发环境,让开发和设计工作更容易结合在一起。但是,对于一个PHP程序员来说,没有哪一个PHP模板对他是最合适、最完美的。因为PHP模板就是大众化的东西,并不是针对某个人开发的。如果能在对模板的特点、应用有清楚的认识基础上,充分认识到模板的优势劣势,就可以知道是否选择使用模板或选择使用哪个模板。
smarty
smarty是一个基于PHP开发的PHP模板引擎。它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
Template Lite
Template Lite是一个非常快而且很小HTML模板引擎。该引擎支持Smarty模板引擎所具有的大部分功能和过滤器。
TinyButStrong
XTemplate
Savant
Savant是一个强大但轻量级的面向对象PHP模板引擎。不象其模板系统,Savant默认没有把模板编译成PHP,而是使用PHP本身来作为它的模板语言所以你不需要学习一套新的标记系统。Savant有一个面向对象的模板插件系统和输出过滤器,可以让你快速为它新增新的行为。
phemplate
phemplate是一个简单而且快速的PHP模板引擎。它允许在模板中加入变量和一些动态程序块包括循环。该模板引擎能够可以实现表现与逻辑相分离,也就是说你可以从PHP脚本中抽出所有HTML内容。设计人员可以随意更改HTML而不用担心弄乱你的PHP脚本。
Dwoo
Sugar
Sugar是一个类似于Smarty的模板引擎,拥有一个简洁和易于理解的语法。
Twig
Twig是一个灵活,快速,安全的PHP模板语言。它将模板编译成经过优化的原始PHP代码。Twig拥有一个砂箱模型来评估不可信的模板代码。Twig由一个灵活的词法分析器和语法分析器组成,可以让开发人员定义自己的标签,过滤器并创建自己的DSL。
FXL Template
FXL Template是一个易于使用的模板引擎,提供了一个模板系统所拥有的所有基本功能。支持简单的text/array分配,block和嵌套的blocks。拥有良好的规则表达式和简单的模板语法,以实现尽可能快的模板处理。
H2o
ns-template
2010年大约5月份时,感受到DEDE标签主动调用数据理念适合CMS,所以开发了一些Smarty自定义修改器和自定义标签,但是在执行过程中性能低下,开销以s计,这是无法容忍的。分析跟踪,受自定义标签实现的原理限制不可能快。于是在dz模板的基础上加入了不少smarty语法以及自定义标签功能。经历了一年多线上运行和bug修复,并且弥补了DEDE标签多级嵌套问题后,在较稳定的情况下释出该版本。