《[精选]网站开发技术之模版smarty32980.pptx》由会员分享,可在线阅读,更多相关《[精选]网站开发技术之模版smarty32980.pptx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网站开发技术高级篇网站开发技术高级篇日照职业技术学院毛书朋 2008.4第七部分 模版技术(smarty)提纲提纲模版smarty的产生什么是smarty Smarty的特点Smarty的应用安装第一个程序详解模版模版smarty的产生的产生一个应用程序的开发流程如下:提交计划文档界面设计者美工制作了网站的外观模型,然后把它交给后台程序员。程序员使用PHP实现商业逻辑,同时使用外观模型做成基本架构。然后工程被返回到html页面设计者继续完善。就这样工程可能在后台程序员和页面设计者之间来来回回好几次。由于后台程序员不喜欢干预任何有关html标签,同时也不需要美工们和php鬼混在一起;美工设计者只
2、需要配置文件,动态区块和其他的界面部分,不必要去接触那些错综复杂的php代码。因此,这时候有一个很好的模板支持就显得很重要了。模版模版smarty的产生的产生早在1999年后期,我们就已经开始为模板引擎写说明文档。在完成这个文档之后,我们开始用c写一个模板引擎,并有希望被包含到php里去。在 撞上了许多的技术难题的同时,“什么是模板应该做的,什么不该做”这个问题,也被热烈的讨论着。从这些经验,我们决定应该用Php将模板引擎写成一个类,让任何觉得合适的人使用它。模版模版smarty的产生的产生所以我们写了一个引擎,从此就有了smarty.(注:这个类以前从来没有公开发表过)。这个类几乎达到了我们
3、所有的要求:常规变量替换,支持包括其他模板,使用配置文件集成设置,嵌入Php代码,限制if语句的作用,还有更多的可以多层嵌套的健壮的动态区块。它用常规表达式做到这一切,于是代码变得相当简洁,我们可以说:令人费解的。在每次调用的时候,都要去解析 那些语法和常规表达式,于是在大型应用的时候,它显然慢了下来。在程序员的眼光看来,最大的问题还是使用php脚本建立和处理模板和动态区块的所有必要工作。我们应该如何使他变得更简单?模版模版smarty的产生的产生我们可以想象smarty应该有怎样的最后表现。我们知道php代码如果没有了模板解析的开销将有多快,我们也知道从一般的美工看来php语言是多么的“恐怖
4、”,然而这一切可以被一种更简单的模板语法掩饰掉。我们应该怎样把这两种方法的长处结合起来?于是,Smarty诞生了.什么是什么是smarty Smarty是一个php模板引擎。更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法。可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下,他们不可能是同一个人。例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现。在Smarty的程序里,这些被忽略了。模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等)
5、。有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变)。这个改变不影响模板设计者,内容仍将准确的输出到模板。同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑。因此,程序员可以改变逻辑而不需要重新构建模板,模板设计者可以改变模板而不影响到逻辑。Smarty的特点的特点-优点优点1.速度:采用smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。2.2.编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在
6、源程序没有改动的情况下)Smarty的特点的特点-优点优点3.缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为true时,在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。4.插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。5.模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。Smarty的特点的特点-缺点缺点1.需要实时更新的内容。例如像
7、股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。2.小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点。Smarty的应用的应用-安装安装安装smarty的环境:php版本4.06以上版本。安装smarty方法非常简单,从http:/ ET工作室 2008年4月 Email: Smarty的应用的应用-第一个程序第一个程序编写php文件:index.phptemplate_dir=./templates;/设置模板目录$smarty-compile_dir=./templates_c;/设置编译目录$smar
8、ty-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=new Smarty();设置模板目录$smarty-template_di
9、r=./templates;设置编译目录$smarty-compile_dir=./templates_c;Smarty的应用的应用-详解详解一、应用的基本设置设置缓存目录$smarty-cache_dir=./cache;设置缓存时间$smarty-cache_lifetime=60*60*24;缓存设置$smarty-caching=false|true;这里是调试时设为false,发布时请使用trueSmarty的应用的应用-详解详解一、应用的基本设置定义边界符$smarty-left_delimiter=;$smarty-right_delimiter=;进行模板变量替换$smarty
10、-assign(“name”,“变量内容”);编译并显示位于./templates下的模板$smarty-display(“模版文件名);$smarty-display(index.tpl);Smarty的应用的应用-详解详解一、应用的基本设置模版文件中的注释$smarty-left_delimiter*$smarty-right_delimiter*模版文件中的文件包含(引用)$smarty-left_delimiter include file=“模版文件名$smarty-right_delimiterinclude file=header.tpl*页面头*Smarty的应用的应用-详解详
11、解二、if,elseif,else if$sex eq“1 Welcome Sir.elseif$sex eq“2 Welcome Maam.else Welcome!/if Smarty的应用的应用-详解详解三、foreach foreach:用于循环简单数组,它是一个选择性的section循环,它的定义格式为:foreach from=$array item=array_idforeachelse/foreach 其中,from 指出要循环的数组变量,item为要循环的变量名称,循环次数由from所指定的数组变量的个数所决定。foreachelse用来当程序中传递过来的数组为空时的处理。S
12、marty的应用的应用-详解详解编写一模版文件:index4.tpl新闻编号 新闻标题 foreach from=$newsArray item=newsID$newsID.newsID$newsID.newsTitleforeachelse对不起,数据库中没有新闻输出!/foreachSmarty的应用的应用-详解详解编写一php文件:index4.php$array=array(newsID=1,newsTitle=第1条新闻);$array=array(newsID=2,newsTitle=第2条新闻);$array=array(newsID=3,newsTitle=第3条新闻);$ar
13、ray=array(newsID=4,newsTitle=第4条新闻);$array=array(newsID=5,newsTitle=第5条新闻);$array=array(newsID=6,newsTitle=第6条新闻);$smarty-assign(newsArray,$array);Smarty的应用的应用-详解详解四、sectionsection的产生是为解决foreach的不足的,与foreach一样,它用于设计模板内的循环块,它较为复杂,可极大程序上满足程序需要,所以在程序中我习惯使用它而不使用foreach,基本原形为:section name=name loop=$varN
14、ame start=$start step=$step max=$max show=trueSmarty的应用的应用-详解详解四、sectionname:section的名称,不用加$loop:要循环的变量,在程序中要使用assign对这个变量进行操作。$start:开始循环的下标,循环下标默认由0开始$step:每次循环时下标的增数$max:最大循环下标$show:boolean类型,决定是否对这个块进行显示,默认为true Smarty的应用的应用-详解详解编写一模版文件:index5.tpl这里将输出一个数组:新闻编号 新闻标题 section name=loop loop=$News$
15、Newsloop.newsID$Newsloop.newsTitlesectionelse对不起,没有任何新闻输入!/section Smarty的应用的应用-详解详解五、PHP+MySQL+Smarty的使用创建数据库Create databases news创建数据表CREATE TABLE IF NOT EXISTS news_info(id int(11)NOT NULL auto_increment,title varchar(60)NOT NULL,PRIMARY KEY (id),UNIQUE KEY id(id)ENGINE=MyISAM DEFAULT CHARSET=lat
16、in1 AUTO_INCREMENT=3;插入数据Smarty的应用的应用-详解详解五、PHP+MySQL+Smarty的使用编写一模版文件:index6.tpl这里将输出一个数组:新闻编号 新闻标题 section name=loop loop=$News start=$start step=$step$Newsloop.id$Newsloop.titlesectionelse 对不起,没有任何新闻输入!/section Smarty的应用的应用-详解详解五、PHP+MySQL+Smarty的使用编写一模版文件:index6.php$db=mysql_connect(localhost,ro
17、ot,root)or die(数据库连接错误!);mysql_select_db(news,$db);$query=select*from news_info;$rst=mysql_query($query,$db);while($info=mysql_fetch_array($rst,MYSQL_ASSOC)$array=$info;$smarty-assign(News,$array);unset($array);/注销数组mysql_close($db);/关闭数据库连接$smarty-display(“index6.tpl”);/编译模版Smarty的应用的应用-详解详解六、其它更改smarty的默认配置修改Smarty.class.php中的相关参数Smarty的保留变量详见帮助文档更多扩展类的使用详见帮助文档演讲完毕,谢谢观看!