PHP模版引擎smarty
1、 什么是模版引擎,按照我的理解就是,把前端和后台分开的东西,写一个前端的模版,然后里面需要动态内容的地方,直接用一些简单的规定出来,然后再写一个脚本,指定那个模版的变量的值。
2、 我们直接说smarty的配置吧,先去下载一个smaty包,然后解压,你就会看到很多文件,其中只有一个名称叫libs的文件夹有用,这个地方存的有smarty类库,首先你要在你的一个项目里用smarty的话,直接把这个libs复制到你的项目的主文件下
3、 然互你要使用smarty的类话,你就是后续爱你要把他包含进来,require ‘./libs/Smarty.class.php’;(注意一点你的Smarty,S要大写),然后实例这个对象。Smarty里有很多需要关注的成员属性,你可以在一个脚本里包含包括smarty的包含,实例,以及设置这些属性。
4、 命名一个文件 init.ini.php 代码 :
<?php
Define(“ROOT’,str_replace(“\\”,”/”,dirname(__FILE__)).”/”);//指定项目的根路径
Require ROOT.”libs/Smarty.class.php”;
$smarty=new Smarty();
$smarty->setTemplateDir(ROOT.”templates/”)
//->addTemplateDir(ROOT.”templates2/”)
->setComplileDir(ROOT.”templates_c/”)
->setPliginsDir(ROOT.”plugins/”)
->setCacheDir(ROOT.’cache/’)
->setConfigDir(ROOT.’configs’);
$smarty->caching=false;
$smarty->cache_lifetime=60*60*24;
$smarty->left_delimiter=’<{’;
$smarty->right_delimiter=’}>’;
?> 然后在需要他的时候包含来就可以了
5、 先来一个简单的smarty 示例吧
模版文件:
<html><head>
<meta http-equiv=”content-type”content=”text/html;charset=utf-8”>
<title><{$title}</title>
<head>
<body>
<{$content}>
</body>
</html>把这个文件命名为test.html 然后在项目的煮目录里创建index.php
<?php
Require ‘init.ini.php”;
$smarty->assign(“title”,”模版用的网页标题”);
$smarty->assign(“content”,”测试用的网页内容”);
$smarty->display(“test.html”);
?>
看到输出结果以后,然后你在templates_c下,就会看到相应的编译的文
6、 上面自己生成的编译后的文件,下次再去访问那个脚本时,只要内容没发生变化,Smarty就会抓去编译后的文件去执行了,但是这个编译后的文件任然是一个脚本,还是概要执行数据库连接内容的还是要执行,并不是一个纯静态网页。
7、 我们做后台的不太需要搞清楚太多的smarty的前端知识,直接讲smarty的控制缓存吧。
首先你的$smarty->caching=true 或者1 ,false是关闭缓存嘛。(0是永远生成缓存,这个只是个别测试的时候用的较多)然后用$smarty->setCacheDir(“./cache”);然后你有必要把你的缓存设置一个生命周期啊,用$smarty->cache_lifetime=60*60*24*7设置缓存周期为一周,后面也正常的display(”index.html”);即可。
8、 每个模版设置多个缓存,这很简单,直接在$smarty->display(“test.html”,$_GET[‘id’]));,反正display后的第二个参数要有,而且要唯一即可。
9、 为缓存实例消除处理开销代码如下 <?php
$smarty->caching=true;
If(!smarty->isCached(“index.html”)){
调用数据库,并对变量进行赋值,消除了处理数据库的开销
}
$smarty->display(“index.html”);
如果一个模版有多个缓存实例,就在isCached()和display()函数第二个参数设置一个就好了
<?php
$smarty->caching=true;
If(!smarty->isCached(“index.html”,$_GET[‘id’])){
调用数据库,并对变量进行赋值,消除了处理数据库的开销
}
$smarty->display(“index.html”,$_GET[‘id’]);
?>
10、 清除缓存
<?php
require 'ini.inc.php';
$smarty->clearCache("test.html",3);
?>
上面这个代码写的就是清除一个模版多个缓存
还有几个形式:
$smarty->clearAllCache();清除所有缓存
$smarty->clearCache(“index.html”);清除一个缓存
$smarty0>clearCache(“index.html”,”cacheid”)清除一个模版的一个缓存
11、 局部缓存
<{nocache}> <{$aa}> <{/nocache}>就是把不要缓存的东西放在 <{nocache}>
……<{/nocahe}>里,而且在脚本文件了,不需要缓存的东西要放在iscache() 判断外