现在的位置: 首页 > 综合 > 正文

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

2014年02月17日 ⁄ 综合 ⁄ 共 4681字 ⁄ 字号 评论关闭
  【摘要】随着当今社会网络化、信息化的不断深入,构建动态网站已经普及到整个网站制作领域。本文是介绍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

抱歉!评论已关闭.