php中smarty模板配置学习笔记

作者:袖梨 2022-06-25

优点:

1. 速度:采用smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
3. 缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为true时,在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4. 插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

缺点:

1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点

1.下载源代码

smarty放到我们的项目里面。然后再在根目录下新建两个文件夹,一个叫templates这个是模板文件夹,一个叫templates_c,这个是存放编译文件的文件夹。

2.配置smarty


在项目的根目录下面新建一个文件,叫smarty_inc.php,其实这个文件和路径都是可以变的,在里面输入相关的配置

 代码如下 复制代码

include_once './smarty/Smarty.class.php';
$smarty = new smarty();
$smarty->template_dir = './templates/'; //模板文件
$smarty->compile_dir = './templates_c/'; //模板编译文件的存放路径
$smarty->config_dir = './config/';//该变量定义用于存放模板配置文件的目录,默认情况下,目录是:"./configs",也就是说他将会在和php执行脚本相同的目录下寻找配置目录。
$smarty->cache_dir = './cache/';//缓存的目录文件夹
$smarty->caching = false; //是不是开启缓存
$smarty->left_delimiter = "{"; //变量的标示符的开始
$smarty->right_delimiter = "}"; //变量的标示符的结束
?>

再在templates下面新建一个文件,可以html,tpl的

{$test}

我们看到在html的正文中{$test},这个表示这个一个变量,在编译的时候需要替换里面的内容
3.测试配置是否成功

新建一个php的文件,输入代码
 

 代码如下 复制代码
include_once 'smaty_inc.php'; //引入配置文件
$test="this is my test"; //定义变量
$smarty->assign("test",$test); //绑定变量
$smarty->display("test.html"); //指定使用得当模板
?>

现在一起准备完成,在浏览器里面输入访问地址,就可以看到结果了。

行测试,在根目录下建立index.php文件:

 代码如下 复制代码

include("smarty_inc.php");
$val= array("丁庆","董丹凤","情侣");
$smarty->assign("name",$val);
$smarty->display("index.html");
?>

在templates下建立index.html模板:

 代码如下 复制代码




测试页面


<{foreach from=$name item=x}>
数组内容:<{$x}>

<{/foreach}>

给Smarty模板缓存设置id

对于一次调用display()或fetch(),可以存在多个缓存文件。比如说,调用display('index.tpl')时,根据一些条件会有不同的输出内容,而你希望分离这些内容的缓存。要实现这个功能,只要在函数调用时传递$cache_id作为第二个参数即可。
 
display()作为$cache_id。对于每个独立的$my_cache_id值,都会为index.tpl生成独立的缓存。本例中,article_id在URL中传递并被用作$cache_id。
技术注解:从客户端(WEB浏览器)向Smarty或PHP应用传递值的时候,要非常小心。在上例中,使用URL中的article_id虽然看起来很方便,但是可能会有不好的后果。$cache_id用 来在文件系统中创建一个目录,因此,如果用户传入一个特别大的数值,或者写一个脚本在短时间内快速的发送随机的article_id,有可能会在服务器端 造成问题。一定要对传入的数据进行处理然后才使用之。本例中,也许你知道article_id的长度应该是10个字符并只包含数字和字符,并且必须是数据 库中存在的一个article_id。请做这些检查!

调用is_cached()和clear_cache()时,请使用相同的$cache_id作为第二个参数。
 
clear_cache()。
 
例如14-8. 清除一个特定$cache_id的所有缓存

 代码如下 复制代码

require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = 1;

// 清除所有$cache_id为"sports"的缓存
$smarty->clear_cache(null,'sports');

$smarty->display('index.tpl','sports');
?>

这样一来,你可以“组合”你的缓存,只要给它们相同的$cache_id即可

好了,大功告成,就是这么简单,开始你的smarty之旅吧

相关文章

精彩推荐