PHP模板引擎smarty入门

上传人:ni****g 文档编号:497852290 上传时间:2024-01-25 格式:DOC 页数:7 大小:74.50KB
返回 下载 相关 举报
PHP模板引擎smarty入门_第1页
第1页 / 共7页
PHP模板引擎smarty入门_第2页
第2页 / 共7页
PHP模板引擎smarty入门_第3页
第3页 / 共7页
PHP模板引擎smarty入门_第4页
第4页 / 共7页
PHP模板引擎smarty入门_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《PHP模板引擎smarty入门》由会员分享,可在线阅读,更多相关《PHP模板引擎smarty入门(7页珍藏版)》请在金锄头文库上搜索。

1、PHP模板引擎smarty入门内容提示:Smarty是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。Smsrty简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和 使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容 不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目

2、中显的尤为重要。Smarty优点1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为 true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态

3、的HTML文件中来,这相当于调用一个静态的HTML文 件。4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。不适合使用Smarty的地方与其他模板引擎相比Smarty有其独特的优势,但是,这并不意味着它是万能的,优势是相对的,在一些场合,其优势反而为成为其劣势,比如以下场合:1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,导致经常重新编译模板,所以这类型的程序使用Smarty会使模板处理速度变慢。2. 小项目。小项目因为项目简单而美工

4、与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。Smsrty应用深层剖析 用PHP实现MVC开发模式的逻辑层和表示层有多种模板引擎可供选择,但是官方引擎SMARTY诞生后,选择就有了变 化。它的理念和实现都是相当”前卫”的。本文主要讨论SMARTY之于其他模板引擎的不同特点,简要介绍了该引擎的安装及使用,并用一个小的测试案例对比 了SMARTY和PHPLIB template的速度和易用性。一、MVC需要模板 MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了”模型”、”视图”和”控制”,目的就是让不同的开发角色在大中型项目中

5、各司其职。在网络应用程序的开发中,可以用下图来表示各概念之间的关系。 该图展示了一个简单的WEB应用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了应用服务器加工。开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。 96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着 网络的一步步提速,页面大小也从当初的二、三十K暴涨了十倍。写CGI程序就产生了一个迫切的要求:分开PERL和HTML源码。于是,社会进步体现在开 发小组内部的分工上。由于美工和程序员对互相的工作并不是十

6、分熟悉,在进行合作的过程中需要用一种约定的”语言”进行交流。 这种语言并不是我们的母语或者英语,术语叫做”模板”,逻辑和表示依靠它联系。它是结合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可 以按照用户所希望的格式来显示经过逻辑层处理过的数据。如果你有Windows平台下MFC的开发经验,那么一定会很熟悉 Document/Document Template/View的封装,这就是一个很典型的MVC例子。对于Web应用来说,个人认为J2EE中的EJB/servlets/JSP是最强大 的,当然还有简洁优美的Structs。另一个很有名的实现就是COM/DCOM+ASP,这个组合

7、在我国是最多人使用的。通过几种MVC实现在WEB应用程序里的对比,可以得到一个关于模板的概念:一组插入了HTML的脚本或者说是插入了脚本HTML,通过这种插入的内容来表示变化的数据。下面给出一个模板文件的例子,这个模板经过处理后在浏览器里显示”Hello, world!” $greetings $greetings 这里暂且省略处理方式,在后面做专门对比讨论。二、为什么选SMARTY? 对PHP来说,有很多模板引擎可供选择,比如最早的PHPLIB template和后起之秀Fast template,经过数次升级,已经相当成熟稳定。如果你对目前手中的模板引擎很满意,那么也请往下看,相信你作为一

8、个自由软件爱好者或者追求效率 和优雅的开发者,下面的SMARTY介绍多少会有点意思。 除了个人偏好的影响,我一直倾向于使用官方标准的实现,比如APACHE的XML引擎Axis。好处就是可以获得尽可能好的兼容性(比如早期MFC对于 Win3x的兼容性就比其它的应用程序框架好,当然现在各种版本都很完善了)。SMARTY发布之前我一直使用的是 PEAR 中的Integrated Template eXtension。这个引擎和PHPLIB template、Fast template几乎是兼容的,从模板的语法到对模板的处理同出一辙:都是将模板读入内存然后调用parse()函数,用数据对预置的标记进行

9、替换。 下面看看SMARTY是怎么做的。接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件”编译”成php脚本,然后 redirect;如果不是,就是说该url的模板已经被”编译”过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时 限,默认的是模板文件被修改。 怎么样,看起来是不是有点眼熟?想起来了这不就是JSP的原理嘛!的确,这种”编译”用在PHP这样的解释性脚本引擎上显得匪夷所思,但是仔细想想,JAVA不也是由JVM解释执行的吗?这就叫”没有做不到,只有想不到”。 既然谈到了JAVA,就再对PHP的未来发表一点看法。PHP官方

10、网站上宣布了要在2003年年底发布PHP5.0版。这个版本拥有很多崭新的特性:比如 异常处理,命名空间,更加面向对象等等。可以说越来越向JAVA靠拢,SMARTY也是新特性之一,使得PHP更适用于大中型项目的开发。但是似乎离我当 初选择它的原因灵巧易用越来越远了。但就一个软件的生存周期来看,PHP正处在成长期,开发者赋予它更多的功能,以期能胜任商业应用是利大于弊 的。作为PHP的忠实用户,肯定不希望PHP总是被人指责”能力不足”吧? 为什么选择SMARTY,仅仅因为它很像JSP?当然有更为充分的理由。首先,除了第一次编译的成本比较高之外,只要不修改模板文件,编译好的cache 脚本就随时可用,

11、省去了大量的parse()时间;其次SMARTY像PHP一样有丰富的函数库,从统计字数到自动缩进、文字环绕以及正则表达式都可以直 接使用;如果觉得不够,比如需要数据结果集分页显示的功能,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充。 事实胜于雄辩。我设计了一个测试程序,通过速度和开发难度这两个因素对比了一下SMARTY和PHPLIB template,选PHPLIB template的原因是在patrick的文章 在PHP世界中选择最合适的模板中有一个PHPLIB template对Fast template的竞赛,结果PHPLIB template大获全胜,这使得SMARTY有

12、了一个很好的对手。在测试之前,先谈一下在安装过程中需要注意的问题。三、可能遇到的问题 在SMARTY的 官方网站上,有详尽的用户手册,可以选择在线HTML和PDF格式的版本。这里就不再涉及手册上已有的内容,只是把初次使用可能遇到的问题做个解释。 第一个问题就很要命:提示说找不到所需文件?并不是每一个人都按照SMARTY默认目录结构来写应用的。这里需要手工指定,假设目录结构如下:就需要在index.php里指定目录结构:$smart-template_dir = “smarty/templates/”;$smart-compile_dir = “smarty/templates_c/”;$sma

13、rt-config_dir = “smarty/configs/”;$smart-cache_dir = “smarty/cache/”; 第一个问题解决了,紧接着就是第二个:我刚用Dreamweaver生成的漂亮模板怎么不能用?并不是模板文件有什么问题,而是因为SMARTY默认的标 记分隔符是,不巧的是Javascript肯定包含这个标记。好在我们可以用任意字符当作分隔符,再加上这两句:$smart-left_delimiter = “/”;$smart-right_delimiter = “/”;这下安装就基本完成,没问题了。四、反衬和类比 先构思一下对测试的设计。主要的评比因素当然是速度

14、了。为了进行速度测试,采取了算术平均数的作法。在测试页面中重复 将页面生成N遍,再对比总页面生成时间。另一个重要因素是易用性(至于扩展性不用比较已经有结果了),所以使用的模板不能太小。我用的是我个人主页的的页 面,一个用Firework+Dreamweaver生成的HTML文件,大小约7K。其中的变量设置也采取最常用的区块,在PHPLIB template里叫block,而SMARTY则称section。别小看这称呼的不同,易用性标准分两块:模板文件和脚本文件的语法是否简明易用。 下面就深入到测试中来。先看看两种模板文件的语法:蓝条左边是PHPLIB template的模板,右边属于SMART

15、Y。个人偏好是不一样的,所以这里不作评论。着重对比一下脚本里的处理语句,先看PHPLIB template的:$tpl-set_file(phplib, bigfile.htm);$tpl-set_block(phplib, row, rows);for ($j = 0; $j set_var(tag ,”$j”); $tpl-parse(rows, row, true);$tpl-parse(out, phplib);$tpl-p(out);下面是SMARTY的:$smart-assign(row,$row);$smart-display(bigfile.htm); SMARTY只用了tags和row两个变量,而PHPLIB template则多了模板文件的handler,还有一个莫名其妙的out。说实在

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号