不同的PHP应用应该用什么PHP模版?PHP模版之间又有何不同?
论坛,CMS,B2C等等,PHP似乎能够渗透到Web应用的每一个角落。那么不同的PHP应用又应该使用哪些模版呢?PHP模版之间(例如PHPLIB、Smarty)又有什么不同呢。 应该说,没有本质上的不同。 我一直是在用的PHPLIB的模板。很简单,只提供set_var变量的转换,block块的转换。几乎没有任何控制逻辑可以在模板上直接使用,因此必须完全靠程序来控制。没有什么标签的输出。在对某些应用的时候还是比较麻烦,不过,可以靠一些特殊的办法来处理。
如嵌套block的输出,子模板页面的输出,例如select列表的各种HTML对象的输出等。
下面希望能有Smarty达人来介绍下相关的技术特点。
[[i] 本帖最后由 seraph 于 2005-12-4 00:02 编辑 [/i]] 哈哈
我今天开始用SMARTY的...
看手册感觉功能很强大,可以在模板中控制N多逻辑问题,在模板中甚至可以自动截取字符.,可以用IF判断....现在还很不习惯,用得最多的还是SMARTY最基本的那个几个功能,和PHPLIB很相似,,不过感觉到后来应该会比PHPLIB强不少....不过体积比较大..300多K呢
而且感觉缓存也没有加快多少速度,..不过可以减少数据库的负担..呵呵 SMARTY有个问题是过多大的依赖于模板,很多原本程序的控制放到模板里面了,这样虽然在没中程度上简化了程序的复杂性,但对于美工和程序大的分离效果不好,第一:对美工人员要求高了,美工要熟悉smarty模板的标签。第二:美工的后续修改工作比较麻烦。同时也一定程度影响了程序的速度,当然SMARTY考虑了这点,所以引入了缓存,这样的确效果在编译后运行效果比phplib还快,几乎可以和同等过程语言相比。 对于模板,对于SMARTY,我一直有个疑惑,为什么都倾向于吧原本程序应该做的事情加入到模板呢?
例如SMARTY中有if,固然这样是加快了开发进度,但是是否真的有这个必要呢? 我在SMARTY中死都不用IF或别的逻辑控制的语句...当然除开循环拉。..呵呵 最近一直在看IPB的程序,在感觉到它程序本身功能的强大以外,就是它的模板实现给了我很深的印象。
IPB程序有2套模板,一套是存储在数据库中,还有一套是在cache中,如果管理员不使用安全模式的话则使用cache中的文件“模板”,否则直接从数据库中读取“模板”。
为什么给“模板”加引号呢?因为cache文件里面不是真正的模板,而是类。比如说显示论坛分类的模板、显示讨论区的模板、显示用户状态的模板等等。都是类中的一个个方法。最后再“拼接”起来就OK了。
我感觉这种方法比较灵活,可以随心所欲的安排各个部分的位置。但是一般这样的模板在视觉上受限制很大,因此你可能发现基于IPB的程序很少有很漂亮的界面。 最近一直在看IPB的程序,在感觉到它程序本身功能的强大以外,就是它的模板实现给了我很深的印象。
IPB程序有2套模板,一套是存储在数据库中,还有一套是在cache中,如果管理员不使用安全模式的话则使用cache中的文件“模板”,否则直接从数据库中读取“模板”。
为什么给“模板”加引号呢?因为cache文件里面不是真正的模板,而是类。比如说显示论坛分类的模板、显示讨论区的模板、显示用户状态的模板等等。都是类中的一个个方法。最后再“拼接”起来就OK了。
我感觉这种方法比较灵活,可以随心所欲的安排各个部分的位置。但是一般这样的模板在视觉上受限制很大,因此你可能发现基于IPB的程序很少有很漂亮的界面。 模板实现代码和设计分离就OK了
该程序做的还是给程序去做 IPB?可以详细介绍下吗?
最好能提供源码下载~ IPB这个程序现在很容易下载,你可以去[url]www.ziyuan8.com[/url]下载! 其实我觉得模板就是一个html外壳而已,分离了程序逻辑和表现,使程序本身更加可重用。在极少更改代码的情况下可以有不同方式的表现输出。liumingl 兄说IPB的模板时加了引号,因为它不是真正的模板。为什么它不是真正的模板?它就是真正的模板!这种情况在ASP.NET当中非常普遍。
模板就是一种抽象,模板就是OO思想的一种实现。 我所在公司的美工对程序一窍不通,我只能把他给的html改成tpl,然后自己加<{..这样,程序流程控制还是在后台.
如果是企业客户的话,页面设计认同之后,往往改动不多,1年变动1次.. 平时用下来,感觉模板最有用的是这么几点
1、变量的替换,这个是最基本功能了,包括单个变量、循环变量和整个区块等的替换
2、变量转换,比如字符串截取长度、小写变大写等,这些最好可以在模板里面控制
3、显示判断,模板中可以使用if、else等语句方便显示的控制
4、编译和缓存,这个可以大大加快执行速度
做到这些,模板本身的程序就越简单越好了 楼上归纳的很好. 用自己的 恩~~简单是PHP最大的优点 [quote]原帖由 [i]feifengxlq[/i] 于 2005-12-4 11:11 发表
SMARTY有个问题是过多大的依赖于模板,很多原本程序的控制放到模板里面了,这样虽然在没中程度上简化了程序的复杂性,但对于美工和程序大的分离效果不好,第一:对美工人员要求高了,美工要熟悉smarty模板的标签。 ... [/quote]
完全同意此观点。但也有发现到,在模板中加入if之类的标签也有利于对于一些特殊功能的处理需要。 [quote]原帖由 [i]seraph[/i] 于 2005-12-4 20:59 发表
完全同意此观点。但也有发现到,在模板中加入if之类的标签也有利于对于一些特殊功能的处理需要。 [/quote]
咋看一下好像是这么回事,但仔细一想,其实把if放到程序里去实现也就顶多两行代码
让模板去做这些工作,反而加大的程序的负担
而程序员并没有减轻工作量
页:
[1]
2
