|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既然选择了PHP,就要坚持学下去!大家有没有问自己为什么会选择学习PHP呢?就我个人而言,完全是因为兴趣,因为我的专业和计算机完全无关,但是就是对编程很赶兴趣,尤其对网络编程、web开发特别赶兴趣。模板 用PHP完成MVC开辟形式的逻辑层和暗示层有多种模板引擎可供选择,然而官方引擎SMARTY出生后,选择就有了变更。它的理念和完成都是相当"前卫"的。本文次要会商SMARTY之于其他模板引擎的分歧特色,扼要引见了该引擎的装置及利用,并用一个小的测试案例对照了SMARTY和PHPLIB template的速度和易用性。
1、MVC需求模板
MVC最早是在SmallTalk言语的开辟过程当中总结出的一种设计形式,MVC分离代表了"模子"、"视图"和"掌握",目标就是让分歧的开辟脚色在大中型项目中各司其职。在收集使用法式的开辟中,可以用下图来暗示各概念之间的关系。
该图展现了一个复杂的WEB使用法式,用户在阅读器上看到信息是数据库办事器上的内容,但在这之前经由了使用办事器加工。开辟人员担任的就是创立数据布局、处置数据的逻辑和暗示数据的办法。
96年CGI在中国入手下手盛行的时分,初期的WEB法式员都是从HTML入手下手自学成材的,在PERL中print一行行的HTML并非一件难事,然而跟着收集的一步步提速,页面巨细也从现在的2、三十K暴跌了十倍。写CGI法式就发生了一个急切的请求:分隔PERL和HTML源码。因而,社会前进表现在开辟小组外部的分工上。因为美工和法式员对相互的任务并非非常熟习,在停止协作的过程当中需求用一种商定的"言语"停止交换。
这类言语并非咱们的母语或英语,术语叫做"模板",逻辑和暗示依托它接洽。它是联合了HTML和剧本言语特点的一种表达体例。经由过程这类体例,暗示层可以依照用户所但愿的格局来显示经由逻辑层处置过的数据。假如你有Windows平台下MFC的开辟经历,那末必定会很熟习Document/Document Template/View的封装,这就是一个很典范的MVC例子。关于Web使用来讲,团体以为J2EE中的EJB/servlets/JSP是最壮大的,固然还有简约幽美的Structs。另外一个很着名的完成就是COM/DCOM+ASP,这个组合在我国事最多人利用的。
经由过程几种MVC完成在WEB使用法式里的对照,可以失掉一个关于模板的概念:一组拔出了HTML的剧本或说是拔出了剧本HTML,经由过程这类拔出的内容来暗示变更的数据。上面给出一个模板文件的例子,这个模板经由处置后在阅读器里显示"Hello, world!"
<html>
<head>
<title>$greetings</title>
</head>
<body>
$greetings
<body>
</html>
这里暂且省略处置体例,在前面做专门对照会商。
2、为何选SMARTY?
对PHP来讲,有良多模板引擎可供选择,好比最早的PHPLIB template和后起之秀Fast template,经由数次晋级,已相当做熟不乱。假如你对今朝手中的模板引擎很写意,那末......也请往下看,信任你作为一个自在软件喜好者或寻求效力和优雅的开辟者,上面的SMARTY引见几何会有点意思。
除团体偏好的影响,我一向偏向于利用官方尺度的完成,好比APACHE的XML引擎Axis。优点就是可以取得尽量好的兼容性(好比初期MFC关于Win3x的兼容性就比其它的使用法式框架好,固然如今各类版本都很完美了)。SMARTY宣布之前我一向利用的是 PEAR 中的Integrated Template eXtension。这个引擎和PHPLIB template、Fast template几近是兼容的,从模板的语法到对模板的处置同出一辙:都是将模板读入内存然后挪用parse()函数,用数据对预置的标志停止交换。
上面看看SMARTY是怎样做的。接到request后,先判别是不是第一次恳求该url,假如是,将该url所需的模板文件"编译"成php剧本,然后redirect;假如不是,就是说该url的模板已被"编译"过了,反省不需求重编译后可以即刻redirect,重编译前提可以本人设定为固准时限,默许的是模板文件被修正。
怎样,看起来是否是有点眼生?想起来了──这不就是JSP的道理嘛!切实其实,这类"编译"用在PHP如许的注释性剧本引擎上显得匪夷所思,然而细心想一想,JAVA不也是由JVM注释履行的吗?这就叫"没有做不到,只要想不到"。
既然谈到了JAVA,就再对PHP的将来宣布一点意见。PHP官方网站上公布了要在2003年岁尾宣布PHP5.0版。这个版本具有良多极新的特征:好比异常处置,定名空间,加倍面向对象等等。可以说愈来愈向JAVA挨近,SMARTY也是新特征之一,使得PHP更合用于大中型项目标开辟。然而仿佛离我现在选择它的缘由──乖巧易用──愈来愈远了。但就一个软件的保存周期来看,PHP正处在生长期,开辟者付与它更多的功效,以期能胜任贸易使用是利大于弊的。作为PHP的忠厚用户,一定不但愿PHP老是被人求全谴责"才能缺乏"吧?
为何选择SMARTY,仅仅由于它很像JSP?固然有更加充实的来由。起首,除第一次编译的本钱对照高以外,只需不修正模板文件,编译好的cache剧本就随时可用,省去了大批的parse()工夫;其次SMARTY像PHP一样有丰厚的函数库,从统计字数到主动缩进、文字围绕和正则表达式都可以直接利用;假如感觉不敷,好比需求数据了局集分页显示的功效,SMARTY还有很强的扩大才能,可以经由过程插件的模式停止扩大。
现实胜于雄辩。我设计了一个测试法式,经由过程速度和开辟难度这两个要素对照了一下SMARTY和PHPLIB template,选PHPLIB template的缘由是在patrick的文章 《在PHP世界当选择最适合的模板》中有一个PHPLIB template对Fast template的比赛,了局PHPLIB template大获全胜,这使得SMARTY有了一个很好的敌手。在测试之前,先谈一下在装置过程当中需求注重的成绩。
3、能够碰到的成绩
在SMARTY的 官方网站上,有详实的用户手册,可以选择在线HTML和PDF格局的版本。这里就不再触及手册上已有的内容,只是把初度利用能够碰到的成绩做个注释。
第一个成绩就很要命:提醒说找不到所需文件?并非每个人都依照SMARTY默许目次布局来写使用的。这里需求手工指定,假定目次布局以下:
就需求在index.php里指定目次布局:
$smart->template_dir = "smarty/templates/";
$smart->compile_dir = "smarty/templates_c/";
$smart->config_dir = "smarty/configs/";
$smart->cache_dir = "smarty/cache/";
第一个成绩处理了,紧接着就是第二个:我刚用Dreamweaver生成的大度模板怎样不克不及用?并非模板文件有甚么成绩,而是由于SMARTY默许的标志分隔符是{},不巧的是Javascript一定包括这个标志。好在咱们可以用恣意字符看成分隔符,再加上这两句:
$smart->left_delimiter = "{/";
$smart->right_delimiter = "/}";
这下装置就根基完成,没成绩了。
[1] [2] 下一页
会MYSQL吗?会,我会把我的信息在数据库里插入删除啦 |
|