与
PHP 开发有关的模板问题
关于
PHP 的模板的确是一个说起来容易做起来麻烦的事情。随便一数大概有 20 种以上
的选择,光
pear 里面就包含了 5 中不同的模板,实在让人头疼。
千万不要人云亦云的说这个好那个不好,选择模板之前最好先应该搞清楚模板的真正
目的是什么?
简单地说,模板的核心目的就是一个 team work。主要的作用方式有两种:
1、分离 HTML 和 PHP 使网页设计师和 PHP 程序员合作更加愉快。
2、分离显示逻辑和事物逻辑,使得核心事务逻辑的变更和应用程序的扩展更加容易和
灵活,也就是说使得程序员之间合作更加愉快。(这一点经常被人们忽视或者误解,总以为
把
PHP 从 HTML 中弄出去就叫分离显示逻辑和事物逻辑了,如果这样当初又何苦让 PHP
和
html 混在一起呢?)
搞清楚这个模板的真正目的是什么,就容易做出正确的选择了。
如果只有你一个
php 程序员但是需要和其他的网页设计人员一起协同工作,那么选择
能 够 分 离
HTML 和 PHP 的 模 板 就 可 以 了 , phplib ( 现 在 好 像 集 成 到 Pear 里 面 了
http://pear.php.net/package/HTML_Template_PHPLIB)或者
FastTemplate 都是这样的东西,很简单容易上手。
如果你的网站界面比较丑陋并且主要由程序员来完成,但是功能比较复杂更需要强大
的扩展功能,需要分离各个层次包括显示逻辑,那么不要用什么特别的东西,
PHP 本身就
是最好的模板了。要注意的是在这种情况下,你要非常认真的设计你的程序,始终记住要分
离的不是
PHP 和 html 而是事务逻辑(business logic )和显示逻辑(presentation logic)。这也是为
什么我一直对于
Smarty 这种东西非常的抵触, 因为这个 Smarty 的语法太复杂了太强大了,
几乎重新发明了一种脚本语言东西, (即使是 PHP 的程序员也要重新学习它)。更让人费
解的是
这种脚本 越是强大,越容易让人将事务逻辑(business logic )和显示逻辑(presentation
logic)混在一起, 破坏了模板的初衷。
如果你既想
HTML 和 PHP 分离,得到更好的视觉设计,又想整个系统有非常强大的扩
展能力能够适应
html,XML,wml 各种界面,而且不用去学习复杂的语法的同时提供较高的
运行效率,那么这就是一个相当有挑战性的问题了。坏消息是目前还没有一个成熟的模板真
正能够达到这样的要求,好消息是完成这样的一个模板并不是很难,如果你尝试过
Zope 或
者是
ColdFusion 就会发现这种模板的影子,
(
wact http://wact.sourceforge.net/ 和 phptal http://phptal.sourceforge.net/ 就是在向这个方
向发展,应该很有前途)。