发布于 2015-01-12 11:50:09 | 225 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的精品教程,程序狗速度看过来!

Smarty模板引擎

Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。


本文为大家讲解的是smarty安装和配置,Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。感兴趣的同学参考下。

Smarty简介

Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

一、安装

注:这里所使用的Smarty是3.x版本,要求PHP版本为5.2或者更高。
解 压下载下来的Smarty压缩文件,将文件夹libs拷到项目中,在项目中引入libs文件夹中的"Smarty.class.php"文件后既可使用。 在Smarty内部会自动定义一个名为SMARTY_DIR的常量,该常量默认指向Smarty.class.php所在的绝对路径,可以通过自行设定该 值来改变默认值(define('SMARTY_DIR', '/lib/') 注:SMARTY_DIR常量必须以'/'结尾。)。

在正式使用smarty之前,还需要设定几个基本路径:

  • $template_dir 用于存放smarty模版文件,如果未指定该路径,Smarty会自动在当前目录中寻找模版文件。
  • $compile_dir 用于存放smarty编译后的文件,如果不指定该目录,Smarty会自动在当前脚本所在目录下生成一个名为'templates_c'的目录用于存放生成的编译文件。
  • $config_dir 用于存放smarty配置文件
  • $cache_dir 用于存放smarty缓存文件,如果开启Smarty缓存功能,但没有指定该目录,Smarty会自动在当前脚本所在目录下生成一个名为'cache'的目录用于存放缓存文件。
$smarty->template_dir = 'views/';
$smarty->compile_dir = 'lib/smarty/templates_c/';
$smarty->config_dir = 'lib/smarty/configs/';
$smarty->cache_dir = 'lib/smarty/cache/';
//或者
$smarty->setTemplateDir(''views/';');
$smarty->setCompileDir('lib/smarty/templates_c/');
$smarty->setConfigDir('lib/smarty/configs/');
$smarty->setCacheDir('lib/smarty/cache/');
 

 为了不让我们每次使用smarty时都要重新设定这些参数,我们只需要创建一个文件,在这个文件中将这些参数设定,每次使用smarty时只包含这个文件就行了。在这里我创建了一个smarty.inc.php文件,在该文件中代码为:

<?php
        define("ROOT", str_replace("\\","/",dirname(__FILE__)).'/');  //将smarty.inc.php创建于项目根目录下
        require ROOT."/libs/Smarty.class.php";
        
        $smarty = new Smarty();
        $smarty->setCacheDir(ROOT."/showdata/cache")           //设置缓存目录
               ->setConfigDir(ROOT."/showdata/configs")        //设置配置目录
               ->setTemplateDir(ROOT."/showdata/templates")    //设置模板目录
               ->setCompileDir(ROOT."/showdata/templates_c");  //设置编译目录(必选)
        $smarty->setCacheDir(ROOT."/showdata/smarty_cache");   //设置缓存文件夹可减轻压力
        
        $smarty->caching = true;          //开启缓存,建议调试中关闭  默认为关闭False
        $smarty->cache_lifetime = 60;     //设置缓存时间,单位为秒
        
        //设置开始结束边界默认为{}  但容易与javascript冲突
        $smarty->left_delimiter = "<{";
        $smarty->right_delimiter = "}>";

配置完成后,可通过Smarty的testInstall()内置方法查看配置信息。

 

二、使用smarty

Smarty配置完成以后,既可通过Smarty调用指定模版,首先在指定模板目录(/showdata/templates)下创建show.tpl模板文件内容如下:

<!DOCTYPE html>
<html>
<head>
   <meta charset="gb2312">
   <title><{$title}></title>
</head>
<body>
   你好,<{$name}>
</body>
</html>

注:模版文件可以是任意后缀名,为了安全 起见,尽量避免使用.html、.php等可以直接被浏览器解析的文件,当然最好的办法是禁止web浏览器直接访问模版所在文件夹。

在根目录下创建文件index.php,代码如下:

<?php
     include 'smarty.inc.php';
     
     $smarty->assign("title","smarty测试");
     $smarty->assign("name","记忆书签");
     $smarty->display("show.tpl");
     
     //$smarty->testInstall();

然后在浏览器中浏览数据,是否smarty安装成功,如图:

三,smarty的变量传递与使用

变量的传递与访问

  同时Smarty也可以通过内置方法assign()向模版文件中传递各种变量,如数值、字符串、数组、对象等,
 void assign(string varname, mixed var,  bool nocache);  //将在后面讲到

  $arr1 = new Array('zh', '26');
  $arr2 = new Array('name'=>'zh', 'age'=>26);
  $obj = new MyObject();//MyObject为自定义类,包含name等公共属性
  $smarty->assign('str', 'zh');//字符串
  $smarty->assign('num', 6);//数值型
  $smarty->assign('arr1', $arr1);//索引数组1
  $smarty->assign('arr2', $arr2);//关联数组2
  $smarty->assign('obj', $obj);//对象 

模版的调用

 通过Smarty的内置方法display()来打开一个模版文件
 void display(string template, string cache_id, string compile_id); //将在后面讲到

  $smarty->display(show.tpl);

模版中使用变量:

在模版中调用变量,通过在变量之前加上$,并使用'<{}>'边界符将变量括起来,如show.tpl内容如下:

  <body>
      {$str} <!-- 输出zh -->
      {$num} <!-- 输出zh -->
      {$arr1[0]} <!-- 输出zh -->
      {$arr2.name} <!-- 输出zh -->
      {$obj->name} <!-- 输出zh -->
  </body>


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务