Linux 版 (精华区)

发信人: comer (新的希望), 信区: Linux
标  题: 模板,PHPLIB处理方式(一)
发信站: 大红花的国度 (Sat Jun  3 21:51:26 2000), 转信

发信人: chenhao (得做论文了,不做不行了), 信区: Linux
发信站: 北大未名 (Thu Jun  1 21:40:40 2000), 转信

   作者:David Orrd 译者:limodou
     如果你正想知道什么是模板,首先去看一下Sascha
   Schumann写的精彩文章《模板-为什么和如何在PHP3
   中使用它们(Templates - why and how to use them in PHP3)》的前几段。
     
   一般来说,模板可以让你完全地把你的PHP代码从HTML中分离出来,这样使得HTM
   L的图形设计者们非常
   高兴,而且可以避免他们搞丢你的宝贵设计。
   它不是FastTemplates
     那么,我们真的需要在PHPBuilder上关于模板的另一篇文章吗?好,是的,
   因为有不止一种的方法用PHP
   来实现模板。Sascha的文章讲述了如何使用FastTEmplates,但是PHP基本类库("
   PHPLIB")有它自已的模板实
   现。
     它们有什么不同呢?FastTemplates最初是从一个Perl库转变来的。FastTem
   plates对Perl程序工作的很
   好,但是对PHP不太理想。Kristian
   Koehntopp从头编写了PHPLIB模板,作为一个纯的PHP库,它更好地提供
   了PHP的优势。好处之一是Kristian的设计使用了preg_replace()来分析模板,
   菟当菷astTemplate 中使用
   的ereg_replace()要快。PHPLIB模板的另一个好处是它允许动态的块实现嵌套,
   不象FastTemplates。
     两个库都有着非常相似的特性和能力,但是如果你已经
   使用了FastTemplates,并且你想学习使用PHPLIB
   模板,你应该把你所知道的关于FastTemplates
   的一切都忘掉。他们的特性可能是相似的,但是PHPLIB模板
   所做的每件事比FastTemplates只有一点点不同。
   使用PHPLIB模板
     让我们从一个简单的例子开始。我们假设在/home/mydir/mytemplates/下面
   有一个名为MyTemplate的模
   板,它有一些文本,内容可能是:
   祝贺!你赢了一辆{some_color}Honda Prelude!
     注意"{some_color}"是用大括号包围的。大括号指明some_color是一个模板
   变量。我们可能想写这样一
   个脚本,它可以装入模板,在{some_color}模板变量的地方插入PHP变量$my_col
   or的值,然后输出新的文本。
   如果$my_color碰巧被设为"蓝色",最后的输出可能是:
   祝贺!你赢了一辆新蓝色Honda Prelude!
     下面是上述结果的PHP脚本:
   ----------------------------------------------------------------------
   ----------
   <?php
   include "template.inc";
   $my_color = "blue";
   // 将在后面使用
   $t = new Template("/home/mydir/mytemplates/");
   // 创建一个名为 $t 的模板对象
   $t->set_file("MyFileHandle","MyTemplate.ihtml");
   // 设置 MyFileHandle = 我们的模板文件
   $t->set_var("some_color",$my_color);
   // 设置模板变量 some_color = $my_color值
   $t->parse("MyOutput","MyFileHandle");
   // 设置模板变量 MyOutput = 分析后的文件
   $t->p("MyOutput");
   // 输出 MyOutput 的值(我们的分析后的数据)
   ?>--------------------------------------------------------------------
   ------------
     第一行是一个include
   指令,用来提供PHPLIB模板功能。当然PHPLIB做的比模板要多,但是如果你只想
   使用模板特性,只需要包括tmplate.inc
   (template.inc是来自于PHPLIB的文件之一)。PHPLIB模板使用面
   向对象程序设计,所以下一件事情就是创建一个模板对象。代码 <? $t = new
   Template (
   "/home/mydir/mytemplates/" ); ?>
   创建一个新的模板对象$t。这个$t对象是一个句柄,将用来处理
   所有的模板函数,用于PHP脚本中其它的代码。如果你愿意,你可能创建其它的
   0宥韵螅 恳桓龆加凶抛砸
   的模板变量名字空间),但是一个就够用了。在模板的构造函数调用中的路径("
   /home/mydir/mytemplates/")
   用来设置你的模板所在位置的根目录,但是如果你没有设它,它将缺省与你的PH
   P脚本所在目录一样。
     然后我们调用set_file()来定义一个名为"MyFileHandle"的句柄来与MyTemp
   late.ihtml链接(在parse()
   被调用之前,模板不会真正地装入)。顺便说一下,PHPLIB模板的模板文件名的
   后缀为.ihtml 是一种习惯,
   你可以使用.html,.tpl,或其它的后缀。然后调用set_var()来设置模板变量so
   me_color为$my_color的值(
   值为"蓝色"),意味着所有在模板中出现{some_color}的地方都将被词"蓝色"所
   替换,一旦我们调用了
   parse()。
     接着我们调用parse(),它会装入MyFileHandle(MyTemplate.ihtml)进行分
   觯 ⑶姨婊凰 心0灞淞("
   {某变量}")为模板变量的值,分析的结果放在MyOutput中。任何结果都不会输出
   到web服务器上,除非
   p("MyOutput")被调用,它将输出最后分析过的文本。

--
※ 修改:·comer 於 Jun  3 21:49:41 修改本文·[FROM: 202.118.224.2]
--
※ 转寄:·北大未名 BBS.PKU.EDU.CN·[FROM: 202.118.224.2]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: comer.bbs@s390.pku.e]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.172毫秒