专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Linux » phpsmarty:用模板引擎Smarty来开发PHP程序 »正文

phpsmarty:用模板引擎Smarty来开发PHP程序

来源: 发布时间:星期四, 2009年2月12日 浏览:16次 评论:0



  、MVC需要模板
  MVC最早是在SmallTalk语言开发过程中整理总结出种设计模式MVC分别代表了"模型"、"视图"和"控制"就是让区别开发角色在大中型项目中各司其职在网络应用开发中可以用下图来表示各概念的间关系
  
 >

  该图展示了个简单WEB应用用户在浏览器上看到信息是数据库上内容但在这的前经过了应用加工开发人员负责就是建立数据结构、处理数据逻辑以及表示数据思路方法
  
  96年CGI在中国开始流行时候早期WEB员都是从HTML开始自学成材在PERL中pr行行HTML并不是件难事但是随着网络步步提速页面大小也从当初 2、 3十K暴涨了十倍写CGI就产生了个迫切要求:分开PERL和HTML源码于是社会进步体现在开发小组内部分工上由于美工和员对互相工作并不是十分熟悉在进行合作过程中需要用种约定"语言"进行交流
  
  这种语言并不是我们母语或者英语术语叫做"模板"逻辑和表示依靠它联系它是结合了HTML和脚本语言特征种表达方式通过这种方式表示层可以按照用户所希望格式来显示经过逻辑层处理过数据如果你有平台下MFC开发经验,那么定会很熟悉Document/Document Template/View封装这就是个很典型MVC例子对于Web应用来说个人认为J2EE中EJB/servlets/JSP是最强大当然还有简洁优美Structs个很有名实现就是COM/DCOM+ASP这个组合在我国是最多人使用
  
  通过几种MVC实现在WEB应用对比可以得到个有关模板概念:组插入了HTML脚本或者说是插入了脚本HTML通过这种插入内容来表示变化数据下面给出个模板文件例子这个模板经过处理后在浏览器里显示"Hello, world!"
  
  <html>
  <head>
   <title>$greetings</title>
  </head>
  <body>
   $greetings
  <body>
  </html>
  这里暂且省略处理方式在后面做专门对比讨论
  
   2、为什么选SMARTY?
  对PHP来说有很多模板引擎可供选择比如最早PHPLIB template和后起的秀Fast template经过数次升级已经相当成熟稳定如果你对目前手中模板引擎很满意那么......也请往下看相信你作为个自由软件Software爱好者或者追求效率和优雅开发者下面SMARTY介绍多少会有点意思
  
  除了个人偏好影响直倾向于使用官方标准实现比如APACHEXML引擎Axis好处就是可以获得尽可能好兼容性(比如早期MFC对于Win3x兼容性就比其它应用框架好当然现在各种版本都很完善了)SMARTY发布的前我直使用是PEAR 中Integrated Template eXtension这个引擎和PHPLIB template、Fast template几乎是兼容从模板语法到对模板处理同出辙:都是将模板读入内存然后parse用数据对预置标记进行替换
  
  下面看看SMARTY是如何做接到request后先判断是否第次请求该url如果是将该url所需模板文件"编译"成php脚本然后redirect;如果不是就是说该url模板已经被"编译"过了检查不需要重编译后可以马上redirect重编译条件可以自己设定为固定时限默认是模板文件被修改
  
  如何样看起来是不是有点眼熟?想起来了──这不就是JSP原理嘛!这种"编译"用在PHP这样解释性脚本引擎上显得匪夷所思但是仔细想想JAVA不也是由JVM解释执行吗?这就叫"没有做不到只有想不到"
  
  既然谈到了JAVA就再对PHP未来发表点看法PHP官方网站WebSite上宣布了要在2003年年底发布PHP5.0版这个版本拥有很多崭新特性:比如异常处理命名空间更加面向对象等等可以说越来越向JAVA靠拢SMARTY也是新特性的使得PHP更适用于大中型项目开发但是似乎离我当初选择它原因──灵巧易用──越来越远了但就个软件Software生存周期来看PHP正处在成长期开发者赋予它更多功能以期能胜任商业应用是利大于弊作为PHP忠实用户肯定不希望PHP总是被人指责"能力不足"吧?
  
  为什么选择SMARTY仅仅它很像JSP?当然有更为充分理由首先除了第次编译成本比较高的外只要不修改模板文件编译好cache脚本就随时可用省去了大量parse时间;其次SMARTY像PHP样有丰富从统计字数到自动缩进、文字环绕以及正则表达式都可以直接使用;如果觉得不够比如需要数据结果集分页显示功能SMARTY还有很强扩展能力可以通过插件形式进行扩充
  
  事实胜于雄辩我设计了个测试通过速度和开发难度这两个原因对比了下SMARTY和PHPLIB template选PHPLIB template原因是在patrick文章在PHP世界中选择最合适模板中有个PHPLIB template对Fast template竞赛结果PHPLIB template大获全胜这使得SMARTY有了个很好对手在测试的前先谈下在安装过程中需要注意问题
  
   3、可能遇到问题
  在SMARTY官方网站WebSite上有详尽用户手册可以选择在线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/";
  第个问题解决了紧接着就是第 2个:我刚用生成漂亮模板如何不能用?并不是模板文件有什么问题而是SMARTY默认标记分隔符是{}不巧是script肯定包含这个标记好在我们可以用任意当作分隔符再加上这两句:
  
  $smart->left_delimiter = "{/";
  $smart->right_delimiter = "
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: