好久不去技术论坛,最近逛了一下,才发现越来越多的人对模板感兴趣了,当然其中很多都是关于PHPLIB Template类的使用的.诚然,网络上已经很多相关的话题了,但据我观察,中文的资料实在不多,且大多是讲的太笼统,没能全面阐述它的用法,即使看了还是一知半解.所以本文就期望通过对它的比较全面的介绍,让你能达到入门的水平.
何谓"模板"技术
我们的最初观察是将界面和实现代码分离开来,这样做的目的是将美工和程序员的工作分离开来.PHP的一个优点是可以把PHP代码嵌入HTML里面,这样你就不必再把大段HTML代码用函数print()输出来.
print("<table border=0 cellspacing=1 cellpadding=2 width=100%>");
print("<tr>");
print("<td>");
print("我爱你 kiki");
print("</td>");
print("</tr>");
print("</table>");
这段代码对界面维护来说是相当困难的,除非程序员做这样事情且他对样式表,HTML非常精通.取而代之的我们用
<table border=0 cellspacing=1 cellpadding=2 width=100%>
<tr>
<td>
<?php print("我爱你 kiki ");?>
</td>
</tr>
</table>
这样,做美工设计的只要不碰PHP代码,就可以很方便地改变这个表格的样式,如果使用dreamweaver等所见即所的工具,将会更加方便.
现在的一个问题是,如果美工正在修改的话,程序员仍需要把这个文件取回来,才能改变里面的PHP代码,修改完后再交给美工,这样循环往复,往往要花费大量的时间和精力,如果你所在公司是采取这种模式的话,恐怕老板为了节省时间,会把很多界面设计也交给程序员来做,毕竟他不会让你们任何一个闲座着等待.作为程序员的你此时可能会梦想:如果程序员只要负责写程序代码,不理会令人烦躁的界面,那就太好了.
或许Fast Template诞生那刻起(我不敢确定它是最早的PHP模板处理类,但用起来确实很方便),你的梦想就几近实现.策划们把东西交给你,当然里面的元素都写好了的,形如以下tpl.html
<table border=0 cellspacing=1 cellpadding=2 width=100%>
<tr>
<td>
我爱你{MY_LOVE}
</td>
</tr>
</table>
你只需要在程序里给这些元素(MY_LOVE)赋值就行了tpl.php
$tpl->assign("MY_LOVE", "kiki");
你基本上不用管这些元素的样式(比如字体,宽度,高度等),所在位置,甚至这些元素将来可能不再使用了.与此同时,美工那边把元素放进一个HTML页面里(这个页面就是我们所说的"模板"),他也不用担心会不小心把你的程序给搞坏了.然后做完后交给一个专门负责程序和美工结合的人(当然在国内也是程序员做这样事情),他很可能只需要很小的几个修改就可以把两者结合的很好.这样对你,对美工,都大大提高了工作效率,老板自然也会很高兴啦.
所以我这里所说的"模板"技术,就是可以将程序和美工分离的技术,注意不是逻辑抽象层与表现层的分离.一来,那样将会让人不知所云,因为"逻辑抽象"这四个字就已经太抽象了,且表现层并只是美工所做的模板.所以,很多人试图把Fast Template,PHPLIB Template两个与Smarty相比较,在我看来,这是明显不对的.
PHPLIB Template类也是一个用PHP代码处理模板的一个类.也是本文要将要阐述的一个模板类.同上面讲的一样,它能把模板中的"元素"替换为你为它设定的值",且处理的很很好,也容易扩展,由于使用了preg_函数,所以速度也比较快.很多人都会提出一个意见:使用模板会让你的代码运行的更慢,确实是这样的,如果你使用嵌入式写法,会快一些,如果把PHP连同HTML全部写入PHP里(用 print("<html标签>"); ),可能会更快.但如果综合考虑整个项目的开发效率,以及后期维护性的话,这些代价是可以承受的,而且慢也不会慢哪里去,真正的问题所在可能是你的模板实在是太大了.当然,你也可以改进这个模板类,让它运行的更快.
提起PHPLIB Template,很多人自然会联想起Fast Template来,我也不例外,因为两者很多地方都很相近.对此,很多人都做了比较,在这里我就不再详述了,或许王晨的这篇文章值得一看: 在PHP世界中选择最合适的模板
获取
可以从这里下载 http://www.sanisoft.com/phplib/download.php PHPLIB,然后从压缩包中php目录下取出template.inc,就可以供我们使用了.
文档
英文文档 http://www.sanisoft.com/phplib/manual/template.php
我翻译的中文文档(仅做参考) http://www.4kiki.net/php_lib_template/
还有网上的很多资源,可以通过google搜索得到.
从类里面注释可以知道,最新版本是2002/07/11 22:29:51的1.12版,所以,你或许需要修改一些东西,在你懂的前提下.我们还可以下载它的PEAR集成版本(http://pear.php.net/package/HTML_Template_PHPLIB/download), 不过你的PHP版本需要在4.3.0以上.