仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1570|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP模板引擎Smarty引见

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-4 00:22:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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吗?会,我会把我的信息在数据库里插入删除啦
变相怪杰 该用户已被删除
19#
发表于 2015-4-12 06:59:58 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
小女巫 该用户已被删除
18#
发表于 2015-4-9 11:30:00 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
admin 该用户已被删除
17#
发表于 2015-4-8 22:30:46 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
再现理想 该用户已被删除
16#
发表于 2015-4-7 20:00:38 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
若天明 该用户已被删除
15#
发表于 2015-4-1 14:09:58 | 只看该作者
实践是检验自己会不会的真理。
小魔女 该用户已被删除
14#
发表于 2015-3-28 01:35:20 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-27 08:10:27 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
透明 该用户已被删除
12#
发表于 2015-3-23 02:38:35 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
金色的骷髅 该用户已被删除
11#
发表于 2015-3-20 23:44:03 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
飘灵儿 该用户已被删除
10#
发表于 2015-3-20 10:29:24 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
乐观 该用户已被删除
9#
发表于 2015-3-18 13:48:08 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
柔情似水 该用户已被删除
8#
发表于 2015-3-15 13:04:57 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
莫相离 该用户已被删除
7#
发表于 2015-3-7 20:10:56 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
活着的死人 该用户已被删除
6#
发表于 2015-3-4 23:14:18 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
因胸联盟 该用户已被删除
5#
发表于 2015-2-9 16:00:36 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
老尸 该用户已被删除
地板
发表于 2015-2-7 19:55:18 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
再见西城 该用户已被删除
板凳
发表于 2015-2-6 18:35:47 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-2-5 16:13:55 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
若相依 该用户已被删除
楼主
发表于 2015-2-4 12:36:18 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表