关于选择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的功用.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值