帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
模板,PHPLIB处理方式(一)
作者:匿名 发布时间:2002-12-21 来源:转自PHPBuilder.com
如果你正想知道什么是模板,首先去看一下Sascha Schumann写的精彩文章《模板-为什么和如何在PHP3 中使用它们(Templates - why and how to use them in PHP3)》的前几段。

   一般来说,模板可以让你完全地把你的PHP代码从HTML中分离出来,这样使得HTML的图形设计者们非常高兴,而且可以避免他们搞丢你的宝贵设计。

它不是FastTemplates

  那么,我们真的需要在PHPBuilder上关于模板的另一篇文章吗?好,是的,因为有不止一种的方法用PHP来实现模板。Sascha的文章讲述了如何使用FastTEmplates,但是PHP基本类库("PHPLIB")有它自已的模板实现。

  它们有什么不同呢?FastTemplates最初是从一个Perl库转变来的。FastTemplates对Perl程序工作的很好,但是对PHP不太理想。Kristian Koehntopp从头编写了PHPLIB模板,作为一个纯的PHP库,它更好地提供了PHP的优势。好处之一是Kristian的设计使用了preg_replace()来分析模板,据说比FastTemplate 中使用的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_color的值,然后输出新的文本。

如果$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脚本中其它的代码。如果你愿意,你可能创建其它的模板对象(每一个都有着自已的模板变量名字空间),但是一个就够用了。在模板的构造函数调用中的路径("/home/mydir/mytemplates/")用来设置你的模板所在位置的根目录,但是如果你没有设它,它将缺省与你的PHP脚本所在目录一样。



  然后我们调用set_file()来定义一个名为"MyFileHandle"的句柄来与MyTemplate.ihtml链接(在parse()被调用之前,模板不会真正地装入)。顺便说一下,PHPLIB模板的模板文件名的后缀为.ihtml 是一种习惯,你可以使用.html,.tpl,或其它的后缀。然后调用set_var()来设置模板变量some_color为$my_color的值(值为"蓝色"),意味着所有在模板中出现{some_color}的地方都将被词"蓝色"所替换,一旦我们调用了parse()。



  接着我们调用parse(),它会装入MyFileHandle(MyTemplate.ihtml)进行分析,并且替换所有模板变量("{某变量}")为模板变量的值,分析的结果放在MyOutput中。任何结果都不会输出到web服务器上,除非p("MyOutput")被调用,它将输出最后分析过的文本。

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·动感首页更新实现之八 ------ 首  (2005-03-12)
 ·一个仿phplib的模板类  (2005-03-12)
 ·在PHP世界中选择最合适的模板--比  (2005-03-11)
 ·超越模板引擎  (2005-03-11)
 ·模板,PHPLIB处理方式(二)  (2005-03-11)
 ·模板,PHPLIB处理方式(一)  (2005-03-11)
 ·模板--为什么和如何在PHP中使用它  (2005-03-11)
 ·实例学习PHP之FastTemplate模板篇  (2005-03-11)
 ·用PHP制作静态网站的模板框架  (2005-03-11)
 ·PHP-Web应用程序开发:使用模板  (2005-03-11)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统