《Smarty模板技术在商城中的应用.ppt》由会员分享,可在线阅读,更多相关《Smarty模板技术在商城中的应用.ppt(21页珍藏版)》请在三一办公上搜索。
1、PHP+MySQL动态网页技术教程,第11章 Smarty模板技术 在商城中的应用,11.1 项目导引:图书显示模块,在前面章节,用户登录注册、商品管理和购物车管理等模块的开发,采用PHP代码和HTML代码混合编写模式,但是在许多公司中,界面设计者和程序设计者往往是分开的,也就是说PHP代码和HTML代码是由不同角色编写的,这就要求程序中PHP代码和HTML代码采用分离的编写模式,那么,如何实现分离编写呢?于是,Smarty模板解决方案就产生了。本章的项目是基于Smarty技术完成图书显示模块的开发,那么什么是Smarty模板?Smarty模板该如何使用呢?,11.2 项目分析,Smarty模
2、板是一个使用PHP编写的PHP模板引擎,它将一个应用程序分成了用户界面和程序逻辑两部分,从而使程序员和美工各自扮演不同的角色,负责不同的任务,美工负责页面的显示,程序员负责程序逻辑的处理,这体现了分层的程序开发思想。基于Smarty的图书显示程序,需要将程序分成两个页面,Smarty程序页面和Smarty模板页面。过去我们一个页面就可以实现图书显示,而现在要强制性的把程序分成两部分,Smarty程序页面负责从数据库中提取和处理图书信息,Smarty模板页面则组合使用HTML标记和模板标记去控制图书信息的显示。这样做的优点是,程序员改变程序的逻辑不会影响到页面显示,同样,美工改变页面的显示风格也
3、不会影响到程序的逻辑。,11.3 技术准备,11.3.1 Smarty程序设计1Smarty程序设计中的变量模板目录变量($template_dir)编译目录变量($compile_dir)配置目录变量($config_dir)缓存变量($caching)缓存目录变量($cache_dir)缓存有效期变量($cache_lifetime),11.3 技术准备,11.3.1 Smarty程序设计2Smarty程序设计中方法assign()方法assign()方法用于为模板变量赋值。语法格式如下:void assign(string varname,mixed var)参数varname表示被赋值
4、的模板变量的名称,参数var是赋给变量的值。display()方法display()方法用于显示指定模板。语法格式如下:void display(string template,string cache_id,string compile_id)参数template表示模板资源的类型和路径,参数cache_id用于指定缓存号,参数compile_id用于指定编译号。,11.3 技术准备,11.3.2 Smarty的安装配置1.Smarty的安装2.Smarty的配置确定Smarty类库的存储位置,包含类文件,然后进行实例化,只有实例化之后才能调用类里面的属性和方法。include_once(s
5、marty/Smarty.class.php);/包含smarty类文件$smarty=new Smarty();/建立smarty实例对象$smarty新建templates、templates_c和smarty_cache 3个文件夹,分别用于存放模板文件、编译文件和缓存文件。目录创建好之后,需要设置Smarty对象中的$template_dir、$compile_dir、$cache_dir属性,指明模板文件夹、编译文件夹和缓存文件夹的位置。$smarty-template_dir=./templates;/设置模板目录位置$smarty-compile_dir=./templates_
6、c;/设置编译目录位置$smarty-cache_dir=./smarty_cache;/设置缓存目录位置,11.3 技术准备,11.3.2 Smarty的安装配置2.Smarty的配置通过设置$caching属性可以设置Smarty是否启用缓存,其值为ture表示启用缓存,值为false表示关闭缓存。项目在调试期间,不建议启用缓存,发布时启用缓存。配置代码如下:$smarty-caching=false;/关闭缓存配置Smarty时还需要定义在模板文件中编写Smarty代码的左右边界符,通过设置$left_delimiter和$right_delimiter属性可以设置左右边界符,边界符通常
7、使用#、或,也可以组合使用。配置代码如下:$smarty-left_delimiter=;/左边界符设为$smarty-right_delimiter=;/右边界符设为3Smarty的简单应用,11.3 技术准备,11.3.3 Smarty模板设计1Smarty的内建函数include包含函数include函数用于在当前模板中包含其它模板,当前模板中的变量在被包含的模板中可用。函数语法格式如下:include file=file_name assign=var=参数file为必选参数,用于指定包含模板文件的名称;参数assign用于指定一个变量保存包含模板的输出;参数var用于传递给待包含模板
8、的本地参数,它只在待包含模板中有效。,11.3 技术准备,11.3.3 Smarty模板设计1Smarty的内建函数foreach循环控制Smarty模板中的foreach语句可以循环输出数组,一般用来处理一维数组。语法格式如下:foreach name=foreach_name key=key item=item from=arr_name./foreach参数name为循环的名称,key为当前数组的键值,item为当前元素的变量名,from为该循环的数组,其中item和from为必选参数,不可省略。例11-1,11.3 技术准备,11.3.3 Smarty模板设计1Smarty的内建函数s
9、ection循环控制Section语句是Smarty中的另一个循环语句,该语句可用于比较复杂的数组。语法格式如下:section name=sec_name loop=$arr_name start=num step=num max=show=/section参数name表示循环的名称;loop为循环的数组;start表示循环的初始位置,如start=3说明循环是从数组的第3个元素开始的;step表示步长,如step=2表示循环每执行一次后数组的指针将向下移动两位;max表示循环的最大执行次数;show决定是否显示该循环。其中name和loop是必选参数。section语句可以嵌套使用。例11
10、-2,11.3 技术准备,11.3.3 Smarty模板设计2变量调节器Smarty内置了一些变量调节器,跟PHP中的内部函数类似,变量调节器可用于操作变量,自定义函数和字符串。他可以帮助我们完成一些实用的功能,例如字符串的拆分、替换和截取等。例11-3,11.3 技术准备,11.3.4 Smarty缓存Smarty的缓存机制大大提高了页面访问的速度,减轻了服务器的压力,是一种理想的Web程序开发方法。1创建缓存$smarty-cache_dir=./smarty_cache;/设置缓存目录位置$smarty-caching=true;/启用缓存2缓存的生命周期$smarty-cache_li
11、fetime=3600;/设置缓存时间为一小时3清除缓存$smarty-clear_all_cache();/清除所有缓存文件$smarty-clear_cache(test.html);/清除test.html模板文件,11.4 项目实施,在安装配置好Smarty之后,基于Smarty图书显示程序同样也需要创建两个文件,Smarty程序文件(showbooks.php)和Smarty模板文件(showbooks.html)11.4.1 Smarty配置文件11.4.2 图书显示程序页设计11.4.3 图书显示模板页设计,11.5 技术拓展,11.5.1 MVC设计模式1设计模式设计模式是对面
12、向对象程序设计中同类问题的一种解决方案,是一个用来组织代码的模板,它不是一个能在项目中直接包含和使用的代码库。2MVC模式,11.5 技术拓展,11.5.2 ThinkPHP介绍1ThinkPHP的下载2ThinkPHP的安装ThinkPHP2.0 核心包无需单独安装,解压后即可直接使用。ThinkPHP文件夹中的目录结构如图所示。,11.5 技术拓展,11.5.3 ThinkPHP的应用使用ThinkPHP完成图书显示功能的开发。1创建入口文件2配置项目,连接数据库3创建模型类()4创建控制器()5定义视图中的模板(index.html),11.6 本章小结,本章我们采用一种新的程序开发方法
13、完成了图书显示模块的开发。通过Smarty模板技术的应用,采用PHP程序和HTML模板分离的方法,实现了程序员和美工的分离,是PHP编程技术的一项重大突破。在此过程中,我们学习了Smarty模板的安装配置及Smarty程序设计和模板设计部分的内容。在技术拓展部分,我们介绍了MVC设计模式和基于MVC的PHP框架ThinkPHP的内容,有能力的同学可以进一步研究关于设计模式和PHP框架的内容。,11.7 强化练习,一、选择题1对Smarty模板描述错误的是()ASmarty模板是Zend完全官方化的模板引擎BSmarty模板具有强大的表现逻辑功能CSmarty模板的特点是只适用于PHP程序员DS
14、marty模板具有模板编译、缓存等优良的特性2在安装Smarty模板时,最后创建存储Smarty模板和配置文件的两个目录是()Atemplates configs_dir template_dir cache_dirBtemplates configs templates_c cacheCtemplates_dir configs complie cacheDtemplate_dir configs_dir complie_dir cache_dir,11.7 强化练习,一、选择题3Smarty模板引擎需要在PHP的应用程序逻辑和页面模板中配合使用,才能完全分离表现层和逻辑层。在PHP程序中以
15、下哪个步骤执行了编译的过程,将模板转换为PHP脚本()A加载Smarty模板引擎类,建立Smarty对象B修改Smarty的默认行为C将程序中动态获取的变量,通过Smarty对象中的assign()方法置入模板里D利用Smarty对象中的display()方法将模板内容输出4在使用Smarty模板时可以为其创建配置文件,作为修改程序执行行为的操作接口,下面对Smarty配置文件描述不正确的一项是()A配置文件在Smarty模板中的应用,有利于设计者管理文件中的模板全局变量B配置文件的名称可以任意命名,但一定要保存在Smarty引擎可以找到的目录中C通过在Smarty模板中使用include函数
16、用于从配置文件中加载变量D可以在模板中用两个#或者是保留变量$smarty.config来引用配置文件中的变量,11.7 强化练习,一、选择题5对Smarty模板引擎来说,缓存是必不可少的,下面哪一个是和缓存控制无关的Smarty属性()A$smarty-caching B$smarty-cache_dirC$smarty-cache_lifetime D$smarty-is_cache6在section和foreach两个循环中都有可供调用的一些变量名,用来访问该循环中一些特殊的值,而且在循环中都必须通过Smarty保留变量$smarty进行访问。下面哪个特定变量只能在section区块中使用,而不能在foreach区块中使用()Afirst Blast Ctotal Dloop,11.7 强化练习,二、简答题1什么是Smarty模板,相对于其它模板其优缺点是什么?2简述Smarty的编译和缓存机制?3什么是MVC,其运行原理是什么?,