(PHP)模板引擎Smarty介绍(2)

时间:2010-01-14 09:53:21   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:;   第一个问题就很要命:提示说找不到所需文件?并不是每一个人都按照SMARTY默认目录结构来写应用的。这里需要手工指定,假设目录结构如下:      就需要在index.php里指定目录结构:      $smart->template_d...
  正文:

三、可能遇到的问题
  
  在SMARTY的 官方网站上,有详尽的用户手册,可以选择在线HTML和PDF格式的版本。这里就不再涉及手册上已有的内容,只是把初次使用可能遇到的问题做个解释。
  
  
  第一个问题就很要命:提示说找不到所需文件?并不是每一个人都按照SMARTY默认目录结构来写应用的。这里需要手工指定,假设目录结构如下:
  
  就需要在index.PHP里指定目录结构:
  
  $smart->template_dir = "smarty/templates/";
  $smart->compile_dir = "smarty/templates_c/";
  $smart->config_dir = "smarty/configs/";
  $smart->cache_dir = "smarty/cache/";
  
  第一个问题解决了,紧接着就是第二个:我刚用Dreamweaver生成的漂亮模板怎么不能用?并不是模板文件有什么问题,而是因为SMARTY默认的标记分隔符是{},不巧的是JavaScript肯定包含这个标记。好在我们可以用任意字符当作分隔符,再加上这两句:
  
  $smart->left_delimiter = "{/";
  $smart->right_delimiter = "/}";
  
  这下安装就基础完成,没问题了。
  
  四、反衬和类比
  
  先构思一下对测试的设计。主要的评比因素当然是速度了。为了进行速度测试,采取了算术平均数的作法。在测试页面中重复将页面生成N遍,再对比总页面生成时间。另一个重要因素是易用性(至于扩展性不用比较已经有结果了),所以使用的模板不能太小。我用的是我个人主页的的页面,一个用Firework+Dreamweaver生成的HTML文件,大小约7K。其中的变量设置也采取最常用的区块,在PHPLIB template里叫block,而SMARTY则称section。别小看这称呼的不同,易用性标准分两块:模板文件和脚本文件的语法是否简明易用。
  
  
  下面就深入到测试中来。先看看两种模板文件的语法:蓝条左边是PHPLIB template的模板,右边属于SMARTY。个人偏好是不一样的,所以这里不作评论。着重对比一下脚本里的处理语句,先看PHPLIB template的:
  
  $tpl->set_file('phplib', 'bigfile.htm');
  $tpl->set_block('phplib', 'row', 'rows');
  for ($j = 0; $j < 10; $j++){
  $tpl->set_var('tag' ,"$j");
  $tpl->parse('rows', 'row', true);
  }
  $tpl->parse('out', 'phplib');
  $tpl->p('out');
  
  下面是SMARTY的:
  
  $smart->assign('row',$row);
  $smart->display('bigfile.htm');
  
  SMARTY只用了tags和row两个变量,而PHPLIB template则多了模板文件的handler,还有一个莫名其妙的out。说实在的这个out我当初学的时候就不知道为什么要存在,现在看起来,还是别扭。为什么SMARTY少那么多处理语句呢?答案是工作由引擎完成了。如果你喜欢钻研源程序,可以发现在Smarty_compiler.class.php里有一个名叫_compile_tag()的函数,由它负责把section这个标签转换成php语句。这不是一个普通的标签,它带有参数和数据,节省了脚本编程的工作量,而模板标签上的工作量相差又不大,可以判定在易用性上SMARTY高出一畴。
  
  下面该轮到我们最关注的速度了,毕竟对于一个熟练的web开发者来说,掌握再困难的工具不过是时间问题,何况模板引擎这种学习曲线平缓的技术。而速度则是web应用程序的生命,尤其是模板引擎使用在并发访问量很大的站点上,这点就更重要了。测试开始前,我觉得PHPLIB template会在这一环节上胜出,因为它经历了很多次升级,已经基础没有什么bug,而且SMARTY的引擎个头太大,不像它的对手只有两个文件。
  
  果然,测试结果如下图,PHPLIB template有25%的速度优势:
  
  
  但不会一直这样,我又按了一次刷新,这次得到了不一样的结果:
来源:http://www.002pc.com/master/College/Programming/PHP/11842.html

收藏到:

关于《(PHP)模板引擎Smarty介绍(2)》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td