`
syu
  • 浏览: 16625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于选择smarttemplate的一些原因,以及对其做的一些修改

阅读更多

我从2000年开始使用PHP做为Web应用的脚本语言,数年前接触到smarty以及smarttemplate,

在此过程中,两者都用过不少时间.两下比较后,后来就一直使用smarttemplate,而不是广泛流行的smarty.

其原因不仅仅是smarttemplate较之smarty更轻巧也小得多.

更重要的.是我认为模板所在的显示层,不应该承担起太多的逻辑判断与行为处理.(无可避免,但我认为应该最小化减轻在显示层做这些工作.)

使用模板引擎的目的不外乎二:

一者是使代码尽量和显示结构分离,

二者是能让工作尽量分工,程序员专注于数据,前端设计师专注于页面结构.

从前者的角度来说,如果在模板里夹杂太多运算,逻辑,甚至数据处理的程序内容.无疑是在开历史的倒退车.这样做跟直接在HTML里<?php 有什么区别呢?

从后者的角度来说,也许很多公司没有细分职责.大部份是程序员连程序带切页面一起处理完.所以站在这个角度smarty比之smartemplate就具有不少优势.因为可以一边处理页面代码一边"顺便"就用smarty的语法来完成一些逻辑控制之类的东西.殊不知这样看似方便的背后其实在破坏着一个良好的逻辑控制/显示 分离的结构.造成项目的维护性和扩展性降低.

不过smarttemplate也有一些麻烦的地方,一来是自06年开始就未再更新.

二来是无法引用一些全局变量.页面中所有的变量都得先assign注册,这样会造成诸如放在session中的用户昵称,ID等.为了在每个页面上显示.每次都得assign一次.颇不方便.

smarttemplate的控制功能只提供了IF ELSE BEGIN的基本语法.将对显示层的破坏降低到最大层度.但是IF中可供选择的项太少.

只能是 注册变量 比对 一个固定的值.无法用 注册变量比对注册变量.亦无法使用and or等基本语法.使得灵活程度相对降低.

(即使我们应尽量避免在页面中处理逻辑.但有些地方仍无可避免....:-( )

我对这些做了一些修改.在原有代码基础上增加了{SESSION.uid},{GLOBALS.test}之类的全局变量引用方法.

对IF做了些改写,使IF能支持如 <!-- IF {a}>{b} AND {c}<5 -->的写法.

亦对BEGIN做了略为修改.使之实现类似foreach的功用.

如果有想要的.可以邮件/站内短信给我.提供给大家.

分享到:
评论

相关推荐

    smarttemplate_1.2.1_Demo

    对smarttemplate1.2.1 中的文件结构和部分程序代码稍做了一下修改,在IIS或Apache服务器上配置OK后可以直接运行浏览,不用改动任何代码,便于初学者学习研究。 此Demo已在本机测试通过 测试环境:WINDOWS2003+IIS6+...

    smartTemplate 简单中文手册

    值得注意的是,Smarty的性能优势部分源自于其后端缓存机制,而这种机制在某些场景下可能并非最优选择,因此两者的性能对比需结合具体应用场景考量。 #### 二、SmartTemplate的变量机制 SmartTemplate的变量管理...

    smartTemplate使用Demo

    SmartTemplate就是这样一个模板引擎,尤其在PHP开发中广泛应用。它以简洁、高效和灵活为特点,帮助开发者快速...在实际开发中,结合示例代码"smarttemplate",你可以更好地掌握其使用技巧,并将其应用到自己的项目中。

    SmartTemplate 1.2.1

    - **扩展性**:通过`smarttemplate_extensions`目录下的扩展,可以增加自定义功能或修改默认行为。 - **缓存机制**:可能支持编译后的PHP代码缓存,减少每次请求时的编译时间。 - **多语言支持**:可能提供多语言...

    smarttemplate 应用案例并生成html

    在开始使用 SmartTemplate 之前,我们需要确保已经将其引入项目中。这可以通过下载库文件或使用 CDN(内容分发网络)链接来实现。一旦引入成功,我们就可以创建模板字符串,这些字符串包含了我们希望动态化的 HTML ...

    [其他类别]SmartTemplate V1.2.1_smarttemplate-1.2.1.zip

    在V1.2.1版本中,SmartTemplate可能包含了一些新功能或性能优化。版本号的提升通常意味着开发者对原有功能进行了改进,修复了已知问题,或者增加了新的特性。V1.2.1可能引入了更强大的模板定制能力,更好的用户界面...

    SmartTemplate-开源

    QuickSkin(以前称为SmartTemplate)是一种PHP模板引擎/编译器,旨在支持大规模的基于Web的应用程序。 (HTML-)模板被转换为PHP代码并非常快速地执行。 http://sourceforge.net/projects/quickskin/

    [其他类别]SmartTemplate V1.2.1_smarttemplate-1.2.1.rar

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

    基于PHP模块引擎SmartTemplate高校图书管理系统.pdf

    基于PHP模块引擎SmartTemplate高校图书管理系统 该高校图书管理系统基于PHP模块引擎SmartTemplate,旨在解决高校图书管理系统中的信息化问题。该系统通过建立一个智能化、系统化、信息化的图书管理系统,旨在提高...

    基于php+mysql+smarttemplate的图片共享系统设计与实现(源码+文档)-php-mysql图片共享系统.zip

    资源名字:基于php+mysql+smarttemplate的图片共享系统设计与实现(源码+文档)_php_mysql图片共享系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...

    ThinkPHP使用Smarty第三方插件方法小结

    当ThinkPHP框架的用户需要使用Smarty作为模板引擎时,可以通过一些特定的配置和修改来实现。 在ThinkPHP使用Smarty作为第三方模板引擎时,首先需要在配置文件中开启插件,并指定模板引擎类型为Smarty。具体操作包括...

    Quickskin

    `readme.txt`文件通常会提供关于Quickskin的基本介绍、版本信息、更新日志以及作者联系方式等。它是了解软件背景和使用指导的重要文档。 `changelog.txt`记录了Quickskin每次版本更新的内容,包括新功能、改进和...

    FTP上传下载

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件的传输。FTP上传下载涉及了在...同时,理解和掌握FTP的工作原理以及最佳实践,对于优化内网环境下的文件传输效率和安全性至关重要。

    PHP企业网站源码,数据库是mysql

    SmartTemplate则是一种模板引擎,它将视图层和逻辑层分离,使得网站设计更加灵活,开发者可以专注于业务逻辑,而设计师则可以独立地修改网站样式。 此外,"access(mdb)”通常指的是Microsoft Access数据库,这是一...

    php经典面试题及答案

    在PHP面试中,常见的一些问题涉及语言的基本概念、最佳实践以及特定功能的使用。以下是对提供的面试题的详细解释: 1. **表单提交GET和POST的区别**: - GET方法将表单数据附加到URL中,以键值对的形式显示在地址...

    ASP实例开发源码-尘月工资结算系统ASP版 v1.0.zip

    在这个源码包中,"使用须知.txt"文件很可能是对系统使用的一些基本指导和注意事项,可能包含如何部署、配置环境、数据库连接信息等关键信息。而"132688941380952501"这个文件名看起来不太符合常规,可能是由于某种...

Global site tag (gtag.js) - Google Analytics