一、 介绍
1、 什么是smarty
l smarty是一个基于PHP开发的PHP模板引擎。它提供了逻辑与外在内容的分离。
2、 Smarty的特点
l 速度
l 编译型
l 缓存技术
l 插件技术
l 语句自由 if/elseif/else/endif
缺点:
l 实时更新 :实时性要求较高网站不适合用。
l 小项目 : 程序人员和美工人员是同一个人
3、 关于smarty的配置
l http://smarty.php.net
l /lib
l Smarty 2.6php4.0
l Smarty 3.0php5.0
进入官网,下载相应版本的smarty
下载smarty3.0 php5.0
Smarty2.6 php4.0
下载之后是一个压缩文件,进行解压,解出来之后,有两个文件夹:
Demo:应用案例
Libs:Smarty应用程序
接下来,我们把libs移动至我们的项目中,习惯性改成smarty,进入到smarty文件夹
Debug.tpl:调试模板
Smarty.class.php:Smarty类文件
SmartyBC.class.php:在3.0中,对原来的smarty进行了一些修改,如果想使用以前的功能,需要调用这个文件
Sysplugins:系统插件目录
Plugins:自定义插件目录
二、 Smarty快速入门
三、 Smarty的处理过程
当我们第一次运行程序时,程序会读取某个模板文件,将模板文件中的字符串读取出来,并替换和输出
如果第二次读取时,还需要对模板文件进行读取,这样会增加系统开销
所以现在使用编译机制:
第一次运行某模板时,将内容编译到某个编译文件中,下次如果还是请求这个模板时,会直接调出这个编译文件进行使用
(tips:很重要的一个图:理解smarty 工作机制)
四、 关于Smarty的路径设置
我们上一题中,没有设置任何路径,这时模板与程序在同一目录下是可以被认可的,但是在真正的项目,所有模板应该放到一个统一目录下管理
Smarty2.6
l template_dir :模板目录
l compile_dir :编译目录
l config_dir :配置文件目录
l cache_dir :缓存文件目录
在smarty2.6中,这几个属性是公有的
在smarty3.0中也是支持的,但它们是受保护的(protected)
Smarty3.0
以下四个为设置路径函数
l setTemplateDir()
l setCompileDir()
l setConfigDir()
l setCacheDir()
以下四个为获取路径函数
l getTemplateDir()
l getCompileDir()
l getConfigDir()
l getCacheDir()
在smarty2.6中支持直接对路径赋值的形式,在3.0也是支持的,建议使用3.0的用法(在不久的将来 smarty3.0肯定不会再支持直接用2.6的方法设置属性)
五、 分隔符
l left_delimiter:左分隔符
l right_delimiter :右分隔符
在smarty3.0中,这两个属性是公有的,默认值为 {},如果和项目中用到的分隔符不符,可以考虑这样来做:
如果确定所有项目文件都使用一种,可以将smarty.class.php文件中的内容进行修改
如果只是某些文件情况比较特殊,可以将当前程序的这两个属性进行修改
六、 assign 方法
表示为模板变量赋值
在模板中,可以这样使用:
{$name} :表示模板变量name
在程序中,可以这样使用:
$smarty->assign(‘name’,’wangcai’);
这样就把模板中这个标记替换成了wangcai
$smarty->assign('name','xiaoqiang');