资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,网站开,发,发技术,高,高级篇,日照职,业,业技术,学,学院,毛书朋,2008.4,第七部,分,分,模版技,术,术(,smarty,),提纲,模版,smarty,的产生,什么是,smarty,Smarty,的特点,Smarty,的应用,安装,第一个,程,程序,详解,模版,smarty,的产生,一个应,用,用程序,的,的开发,流,流程如,下,下:,提交计,划,划文档,界面设,计,计者,美工,制作了,网,网站的,外,外观模,型,型,然后把,它,它交给,后,后台程,序,序员。,程序员,使,使用,PHP,实现商,业,业逻辑,同时使,用,用外观,模,模型做,成,成基本,架,架构。,然,然后工,程,程被返,回,回到,html,页面设,计,计者继,续,续完善,。,。,就这样,工,工程可,能,能在后,台,台程序,员,员和页,面,面设计,者,者之间,来,来来回,回,回好几,次,次。由,于,于后台,程,程序员,不,不喜欢,干,干预任,何,何有关,html,标签,,同,同时也,不,不需要,美,美工们,和,和,php,鬼混在,一,一起;,美,美工设,计,计者只,需,需要配,置,置文件,,,,动态,区,区块和,其,其他的,界,界面部,分,分,不,必,必要去,接,接触那,些,些错综,复,复杂的,php,代码,。,。,因此,,这,这时候,有,有一个,很,很好的,模,模板支,持,持就显,得,得很重,要,要了。,模版,smarty,的产生,早在1999,年,年后期,我们,就,就已经,开,开始为,模,模板引,擎,擎写说,明,明文档,。,。在完,成,成这个,文,文档之,后,后,我,们,们开始,用,用c写,一,一个模,板,板引擎,,,,并有,希,希望被,包,包含到php,里,里去。,在,在 撞,上,上了许,多,多的技,术,术难题,的,的同时,,,,“什,么,么是模,板,板应该,做,做的,什,什么不,该,该做”,这,这个问,题,题,也,被,被热烈,的,的讨论,着,着。从,这,这些经,验,验,我,们,们决定,应,应该用Php,将,将模板,引,引擎写,成,成一个,类,类,让,任,任何觉,得,得合适,的,的人使,用,用它。,模版,smarty,的产生,所以我们写,了,了一个引擎,,,,从此就有,了,了,smarty.(,注,:,这个类以前,从,从来没有公,开,开发表过,),。这个类几,乎,乎达到了我,们,们所有的要,求,求:常规变,量,量替换,支,持,持包括其他,模,模板,使用,配,配置文件集,成,成设置,嵌,入,入,Php,代码,限制,if,语句的作用,,,,还有更多,的,的可以多层,嵌,嵌套的健壮,的,的动态区块,。,。它用常规,表,表达式做到,这,这一切,于,是,是代码变得,相,相当简洁,,我,我们可以说,:,:令人费解,的,的。在每次,调,调用的时候,,,,都要去解,析,析 那些语,法,法和常规表,达,达式,于是,在,在大型应用,的,的时候,它,显,显然慢了下,来,来。在程序,员,员的眼光看,来,来,最大的,问,问题还是使,用,用,php,脚本建立和,处,处理模板和,动,动态区块的,所,所有必要工,作,作。我们应,该,该如何使他,变,变得更简单,?,?,模版,smarty,的产生,我们可以想,象,象smarty应该有,怎,怎样的最后,表,表现。我们,知,知道php,代,代码如果没,有,有了模板解,析,析的开销将,有,有多快,我,们,们也知道从,一,一般的美工,看,看来php,语,语言是多么,的,的“恐怖”,,,,然而这一,切,切可以被一,种,种更简单的,模,模板语法掩,饰,饰掉。我们,应,应该怎样把,这,这两种方法,的,的长处结合,起,起来?于,是,是,Smarty诞生,了,了.,什么是,smarty,Smarty,是一个,php,模板引擎。,更,更准确的说,它分开了逻,辑,辑程序和外,在,在的内容,提供了一种,易,易于管理的,方,方法。可以,描,描述为应用,程,程序员和美,工,工扮演了不,同,同的角色,因为在大多,数,数情况下,他们不可能,是,是同一个人,。,。,例如,你正在创建,一,一个用于浏,览,览新闻的网,页,页,新闻标题,标签栏,作者和内容,等,等都是内容,要,要素,他们并不包,含,含应该怎样,去,去呈现。在,Smarty,的程序里,这些被忽略,了,了。模板设,计,计者们编辑,模,模板,组合使用,html,标签和模板,标,标签去格式,化,化这些要素,的,的输出,(html,表格,背景色,字体大小,样式表,等等,),。有一天程,序,序员想要改,变,变文章检索,的,的方式,(,也就是程序,逻,逻辑的改变,),。这个改变,不,不影响模板,设,设计者,内容仍将准,确,确的输出到,模,模板。同样,的,的,哪天美工吃,多,多了想要完,全,全重做界面,也不会影响,到,到程序逻辑,。,。因此,程序员可以,改,改变逻辑而,不,不需要重新,构,构建模板,模板设计者,可,可以改变模,板,板而不影响,到,到逻辑。,Smarty,的特点,-,优点,速度:采用,smarty,编写的程序,可,可以获得最,大,大速度的提,高,高,这一点,是,是相对于其,它,它的模板引,擎,擎技术而言,的,的。,2.,编译型:采,用,用,smarty,编写的程序,在,在运行时要,编,编译成一个,非,非模板技术,的,的,PHP,文件,这个,文,文件采用了,PHP,与,HTML,混合的方式,,,,在下一次,访,访问模板时,将,将,WEB,请求直接转,换,换到这个文,件,件中,而不,再,再进行模板,重,重新编译(,在,在源程序没,有,有改动的情,况,况下),Smarty,的特点,-,优点,3.,缓存技术:,smarty,选用的一种,缓,缓存技术,,它,它可以将用,户,户最终看到,的,的,HTML,文件缓存成,一,一个静态的,HTML,页,当设定,smarty,的,cache,属性为,true,时,在,smarty,设定的,cachetime,期内将用户,的,的,WEB,请求直接转,换,换到这个静,态,态的,HTML,文件中来,,这,这相当于调,用,用一个静态,的,的,HTML,文件。,4.,插件技术:,smarty,可以自定义,插,插件。插件,实,实际就是一,些,些自定义的,函,函数。,5.,模板中可以,使,使用,if/elseif/else/endif,。在模板文,件,件使用判断,语,语句可以非,常,常方便的对,模,模板进行格,式,式重排。,Smarty,的特点,-,缺点,1.需要,实,实时更新的,内,内容。例如,像,像股票显示,,,,它需要经,常,常对数据进,行,行更新,这,类,类型的程序,使,使用smarty会使,模,模板处理速,度,度变慢。,2.小项,目,目。小项目,因,因为项目简,单,单而美工与,程,程序员兼于,一,一人的项目,,,,使用smarty会,丧,丧失php,开,开发迅速的,优,优点。,Smarty,的应用,-,安装,安装,smarty,的环境:,php,版本,4.06,以上版本。,安装,smarty,方法非常简,单,单,从,http:/ ET,工作室,2008,年,4,月,Email:,Smarty,的应用,-,第一个程序,编写,php,文件:,index.php,template_dir=./templates;/,设置,模,模板,目,目录,$smarty-compile_dir=./templates_c;/,设置,编,编译,目,目录,$smarty-left_delimiter=;/,定义,左,左边,界,界符,$smarty-right_delimiter=;/,定义,右,右边,界,界符,$smarty-assign(,“,“name”,“,“,来自,火,火星,的,的,ET,”,”);/,进行,模,模板,变,变量,替,替换,/,编译,并,并显,示,示位,于,于,./templates,下的,index.tpl,模板,$smarty-display(index.tpl);,?,Smarty,的应,用,用,-,详解,一、,应,应用,的,的基,本,本设,置,置,包,含,含,smarty,类,文,文,件,件,include_once(./comm/Smarty.class.php);,建,立,立,smarty,实,例,例,对,对,象,象,$smarty,$smarty=newSmarty();,设,置,置,模,模,板,板,目,目,录,录,$smarty-template_dir=./templates;,设,置,置,编,编,译,译,目,目,录,录,$smarty-compile_dir=./templates_c;,Smarty,的,应,应,用,用,-,详,解,解,一,、,、,应,应,用,用,的,的,基,基,本,本,设,设,置,置,设,置,置,缓,缓,存,存,目,目,录,录,$smarty-cache_dir=./cache;,设,置,置,缓,缓,存,存,时,时,间,间,$smarty-cache_lifetime=60*60*24;,缓,存,存,设,设,置,置,$smarty-caching=false|true;,这,里,里,是,是,调,调,试,试,时,时,设,设,为,为,false,发,布,布,时,时,请,请,使,使,用,用,true,Smarty,的,应,应,用,用,-,详,解,解,一,、,、,应,应,用,用,的,的,基,基,本,本,设,设,置,置,定,义,义,边,边,界,界,符,符,$smarty-left_delimiter=;,$smarty-right_delimiter=;,进,行,行,模,模,板,板,变,变,量,量,替,替,换,换,$smarty-assign(,“,“name,”,”,“,“,变,量,量,内,内,容,容,”);,编,译,译,并,并,显,显,示,示,位,位,于,于,./templates,下,的,的,模,模,板,板,$smarty-display(,“,“,模,版,版,文,文,件,件,名,名,);,$smarty-display(index.tpl);,Smarty,的,应,应,用,用,-,详,解,解,一,、,、,应,应,用,用,的,的,基,基,本,本,设,设,置,置,模,版,版,文,文,件,件,中,中,的,的,注,注,释,释,$smarty-left_delimiter*$smarty-right_delimiter,*,模,版,版,文,文,件,件,中,中,的,的,文,文,件,件,包,包,含,含,(,(,引,引,用,用,),),$smarty-left_delimiterincludefile=,“,“,模,版,版,文,文,件,件,名,名,$smarty-right_delimiter,includefile=header.tpl*,页,面,面,头,头*,Smarty,的,应,应,用,用,-,详,解,解,二,、,、if,elseif,else,if$sexeq,“,“1,WelcomeSir.,elseif$sexeq,“,“2,WelcomeMaam.,else,Welcome,!,!,/if,Smarty,的,应,应,用,用,-,详,解,解,三,、,、,foreach,foreach,:,用,用,于,于,循,循,环,环,简,简,单,单,数,数,组,组,,,,,它,它,是,是,一,一,个,个,选,选,择,择,性,性,的,的,section,循,环,环,,,,,它,它,的,的,定,定,义,义,格,格,式,式,为,为,:,foreachfrom=$arrayitem=array_idforeachelse/for
展开阅读全文