PHP模板引擎Smarty的安装配置及应用实现

  【摘要】随着当今社会网络化、信息化的不断深入,构建动态网站已经普及到整个网站制作领域。本文是介绍PHP技术下的Smarty模板引擎,在分析其特点、工作原理的基础上,简要介绍了该引擎的安装、配置以及应用实现。
  【关键词】Smarty,PHP,Smarty安装配置,Smarty应用实现
  【中图分类号】G434 【文献标识码】B 【论文编号】1009—8097(2007)09—0080—03
  
  一、引言
  
  在当今的动态网页制作领域,无论是ASP 、JSP或是PHP,都是属于内嵌 Server Script 的网页编程语言。因此也就有人设想,如果能把程序应用逻辑与网页呈现逻辑分离的话,会不会比较好呢?其实Smarty就能为我们解决这个问题。
  那让我们先来了解一下什么是Smarty?Smarty有什么样的作用?
  Smarty指的是一种PHP模板引擎,它的作用是能够使程序逻辑与外在内容的分离。在实际应用中,使用Smarty目的就是要使PHP程序 员同模板设计者分离,也就是说当程序员改变程序的逻辑内容时,不会影响到美工的页面设计;当美工修改页面也不会影响到程序逻辑。这为团队合作完成项目打下 了更加坚实的基础,使每个人都能发挥其专长。【1】
  为了更好的理解Smarty,笔者认为有必要把模板的概念重新介绍一下。看完下面这个例子,您也许会对模板有一个更好的认识。
  1996年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材 的,在PERL中print一行行的HTML也是可以实现的,但是随着网络的不断发展,页面大小暴涨了十几倍。于是写CGI程序就产生了一个迫切的要求: 分开PERL和HTML源码。由于需求的驱动,网页制作领域取得了很大的进步,主要体现在开发小组内部的分工上。在大型网站制作中,由于网页美工和程序员 对互相的工作相对分离,因此在进行合作的过程中需要用一种约定的"语言"进行交流。这种语言术语叫做"模板",程序逻辑和内容表示依靠它联系。它是一种结 合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可以按照用户所希望的格式来显示经过逻辑层处理过的数据。通过这个例子,我们熟悉了模板 的含义,进而对Smarty的理解也就没有问题了。【2】
  Smarty构思相当前卫,它已经成为PHP设计的全新路线。Smarty可以用在多种操作系统平台下,本文基于windows平台进行 Smarty的安装、配置和应用实现。笔者所采用的开发工具:PHP语言(php 5.0.3)、MySQL数据库和UltraEdit等开发工具;操作系统采用Windows XP;Web服务器采用IIS5.1。当然您可以使用其它版本的工具进行学习和制作。
  
  二、Smarty的运行机制
  
  在网页制作领域,特别是动态网页制作领域,对各种开发工具、组件、平台的原理的理解以及对其特点的把握就显得相当重要。因此,我们必须对Smarty运行机制进行了解。
  (1) Smarty的特点
  Smarty的特点可以从它的优点和缺点两个方面来分析。
  优点是:运行速度极快;效率高;模板只需被解析一次,无需重复;只需重新编译一次修改过的模板文件;它是一种可扩展的模板语言,你可以自定义 函数和自定义变量格式;任意模板源文件;自定义缓存处理函数;可以在模板文件中嵌入PHP代码。这些优点可以使您在网页制作中更加灵活、方便。
  当然,Smarty也有自己的缺点:需要实时更新的内容,这类型的程序使用smarty会使模板处理速度变慢;美工与程序员兼于一人的小项目,使用smarty会丧失php开发迅速的优点。【3】
  (2)Smarty的运行机制如图1所示,大家流程图中可以清楚看出Smarty的工作过程,这里就不作详述了。【4】
  
  
   三、Smarty的安装和配置
  
  首先到Smarty的官方网站(http://smarty.php.net/download.php)下载最新的版本 。笔者以Smarty-2.6.13版本为例进行介绍。下载后,解压缩到一个指定目录,解压目录可以任意选择,这里是D:/web/smarty目录。
  解压文件目录下有四个主要文件目录demo/、libs/ 、misc/、unit_test/。其中libs目录是主要的库目录,也是我们使用最多的目录。Libs/目录里的库文件主要有:
  Smarty.class.php
  Smarty_Compiler.class.php
  Config_File.class.php
  debug.tpl
  /internals/*.php
  /plugins/*.php
  这些PHP文件可被所有应用程序共享,因此我们千万不要随意修改其中的内容。
  接下来我们来分析Smarty的基本设置。
  (1)在include_path加入库文件目录
  编辑你的php.ini文件,加入你的smarty目录到include_path。方法是:
  include_path = ".;c:/php/includes;d:web/smarty/libs"
  (2) 设置SMARTY_DIR
  Smarty使用一个叫做'SMARTY_DIR'的PHP常量作为它的系统库目录.如果你的程序可以找到 Smarty.class.php文件,你不需要设置SMARTY_DIR,Smarty 将会自己运作.但是,如果 Smarty.class.php没有在你的include_path(php.ini里的一项设置)里,或者没有在你的应用程序里设置它的绝对路径的时 候,就必须手动配置SMARTY_DIR 。(注意:SMARTY_DIR必须包含结尾斜杠)
   手工设置SMARTY_DIR常量方法是:
  define('SMARTY_DIR',' /php/Smarty/');
  (3)在php脚本里创建一个smarty的例子:
    require(‘Smarty.class.php’);
  $smarty = new Smarty;
  ?>
  试着运行一下以上脚本,如果你发现"未找到Smarty.class.php 文件"的错误时,你应该这样做,加入库文件所在目录的绝对路径,方法是:
    require(' /php/Smarty/Smarty.class.php');
  $smarty = new Smarty;
  ?>【5】
  至此,基本配置已经完成。
  
  四、应用实现
  
  我们通过一个“文字传递”的实例来讲解Smarty的应用。
  本例以D:/web/wenzi/为根目录。它要求四个目录,默认下命名为:tempalates, templates_c, configs ,cache. 每个都是可以自定义的,当然也可以修改Smarty的类属性: $template_dir, $compile_dir, $config_dir, 和 $cache_dir。Smarty的四个目录只可以被那些库文件访问,不可以被网络上的浏览器访问的目录。因此为防止不安全因素,建议将那4个目录和网 页文件目录区分开来。
  (1)我们在D:/web/wenzi/分别建立tempalates, templates_c, configs 和 cache四个文件夹。通常使用.tpl来标识smarty模板,下面我们就在tempalates目录下自编一个.tpl文件,取名为 index.tpl。编辑内容如下:
  
  {* smarty 变量标志符中用*包含的文字转化为注释内容 *}
  {include file="header.tpl"}{*页面开始*}
  Welcome!My name is{$name}, We can help each oether.Thanks!
  {include file="foot.tpl"}{*页面结束*}
  上边这个例子是一个tpl模板,其中:
  ①{**}是模板页的注释内容,模板进行解析时不进行任何输出,仅供模板设计者对模板进行注释,这有利于阅读和区分其中的内容。
  ②{include file="X.tpl"}使用此句将一个模板文件包含到当前页面中,例子中将在网站中公用事的head.tpl与foot.tpl进行了包含,你可以这 样想,使用这一句将X.tpl中的内容全部复制在当前语句处。当然,你不使用这一句也可以,将X.tpl中的内容复制到当前语句处
  也是完全可以了。
  ③{$name}: 模板变量,它是smarty中的核心部分,并且以PHP变量形式给出,这将在smarty程序中将使用。
  (2)本例完整源程序如下:
  ①新建header.tpl,并进行编辑:
  
  
  
  
  
  ②新建foot.tpl,并进行编辑:
  


  
感谢您的光临!

  
  
  
  ③新建index.tpl,并进行编辑:
  {include file="header.tpl"}{*页面头*}
  Welcome!My name is{$name}, We can help each oether.Thanks!
  {include file="foot.tpl"}{*页面尾*}
  (4)新建Index.php,并进行编辑:
    //文件名: Index.php
  //作 用: 实现文字传递
  include_once("./Smarty.class.php"); //包含smarty类文件
  $smarty = new Smarty(); //建立smarty实例对象$smarty
  $smarty->template_dir = "./templates";//设置模板目录
  $smarty->compile_dir = "./templates_c"; //设置编译目录
  $smarty->left_delimiter = "{";
  $smarty->right_delimiter = "}";
  $smarty->assign("name", "张三"); //进行模板变量替换
  //编译并显示位于./templates下的index.tpl模板
  $smarty->display("index.tpl");
  ?>
  ④最终执行这个程序时将显示为:
  Welcome!My name is张三, We can help each other.Thanks!
  感谢您的光临!【6】
  尽管这只是一个简单实现,但是笔者却希望它能够起到抛砖引玉的功效,使大家都能够了解它、使用它。只有这样,Smarty才能发挥出耀眼的光芒。
  
  五、结束语
  
  Smarty最有意义之处在于它是PHP新体系的一部份,Smarty自官方发布以来,已经得到了广泛的应用和迅速的发展,其版本不断更新。 Smarty发展飞速的原因是多方面的。就其技术本身而言,具有其它PHP模板引擎不可比拟的优点;更实际也是最重要的是市场更需要Smarty这种速度 快、 效率高、方便易用的PHP模板引擎。鉴于Smarty诸多的优点,对它的掌握就显得相当重要,让Smarty技术成为我们构筑动态网站的有利臂膀!
  
  参考文献
  [1] [2]陈俊宏.《PHP4网站实作深度研究篇》[M].北京:人民邮电出版社,2001
  [3] 南顺成,刘敏.《PHP网络编程技术》[M].北京:国防工业出版社,2002
  [4] 台湾联盟 http://www.twpug.net/modules/mylinks
  [5] [6]Smarty官方网址 http://smarty.php.net

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值