展示给用户的页面由数据及承载数据的标签组成,标签就是html,而数据就是由php处理的变量,这样就涉及到了前端和后端的交互,模板引擎就是将php代码与html代码分离的技术。
smarty是最常用的php模板引擎,由zend公司使用php编写的一套模板引擎。
模板引擎的工作原理就是php代码可以嵌套html标签。
在不使用模板引擎的时候,我们可以通过这样的代码来渲染页面:
而在smarty模板引擎下,则是将文件分离成4部分:
上面的代码通过smarty来完成,在不开启缓存的情况下,需要创建两个文件,生成一个编译文件:
_assign('a',$a);
$smarty->display('test.html')
?>
<{if $a eq 1}><{$a}><{/if}>
?php if($a == 1){ ?>
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setTemplateDir('template');
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setCompileDir('compile');
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setCompileDir('template_c');
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setLeftDelimiter('<{');
$smarty->setRightDelimiter('}>');
缓存是一个让程序员又爱又恨的东西。它既可以优化项目的性能,改善用户体验,但有时也会引发一些错误,甚至于在调试过程中让程序员花费太多时间在错误的方向上。因此我们更需要清晰地认识缓存。
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setCacheDir('cache');
$smarty->caching = true;
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->setCacheLifetime(60);//单位:秒
<{nocache}>
……
<{/nocache}>
被nocache标签包裹的部分,不会被smarty缓存
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->_assign(name,value【,nocached = false】);
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->_display(tpl【,cacheid】);
cacheid为对模板文件所产生的缓存文件的唯一标识
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->isCached(tpl【,cacheid】);
include 'smarty/smarty.class.php';
$smarty = new Smarty();
$smarty->clearCache(tpl【,cacheid】);