优点:
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'; |
再在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"); |
在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->caching = 1; // 清除所有$cache_id为"sports"的缓存 $smarty->display('index.tpl','sports'); |
这样一来,你可以“组合”你的缓存,只要给它们相同的$cache_id即可
好了,大功告成,就是这么简单,开始你的smarty之旅吧