| 订阅 | 在线投稿
分享
 
 
 

在PHP中如何使用模板

2008-12-22 08:10:45 编辑來源:互联网 国际版 评论
 
 
  是否你面临着创建由一个编程人员(可能就是你)和一个设计人员同时进行创作的网站?你不知道如何使工作对你俩来说变得容易吗?我来给你答案:使用FastTemplate来使你的站点更容易定制!

  好了,你可能想知道为什么你要使用FastTemplates。

  ·可以在几秒钟改变你的整个站点的外观

  ·抽象程序设计,没有垃圾HTML代码

  ·设计人员不需要关心全部的"模糊"代码

  ·令人惊讶地快

  ·更容易重用旧的模版(对普通的表单而说)

  FastTemplate源于一个有同样名称的Perl软件包(可以在CPAN上找到)。你可以下载PHP 的版本从它的主页(本站下载地址为:http://www.phpe.net/downloads/1.shtml)。你只需要其中的一个类的文件(class.FastTemplate.php)。

  让我首先解释一下在使用模板生成一个页面与简单地通过echo或print 将页面输出之间有什么不同吧。

  简单地使用echo/print的方法很适合编写短的脚本,但是不能帮助你更好的组织和定制。模板在另一方面给

  了你创建多国语言站点的能力,只是通过改动一个参数。他们可以促使你更关心你要做的。

  在开始编码之前不要害怕思考。它可能会花费一些时间,但是这些花费会随着项目的发展对你有所回报。

  那么,如何应用FastTemplate呢?首先你需要先进行一个简单地调用:

  <?php $tpl=new FastTemplate ("path");

  ?>

  传递给它一个路径,是所有你的模板文件存放的目录。它返回一个对象,你可以用它进行参

  数赋值,生成页面等等。

  FastTemplate是基于这样一种假设:一个很大的页面是由很多小的部分组成的。每一个部分有一个唯一

  的名字。最小的部分是赋值给这样有着唯一名字的一段正常的文本字符串。这个可以通过 <?php

  $tpl->assign(NAME, "text");

  ?>

  来完成。现在,如果你的一个模板包含{NAME},FastTemplate 就知道你

  的意图了。

  另外,FastTemplate需要知道你想如何调用你的模板。你需要通过传递一个相关数组(associative

  array)给 <?php $tpl->define(); ?>

  来给它一个提示。

  <?php

  $tpl->define(array(foo => "foo.tpl",

  bar => "bar.tpl"));

  ?>

  这些赋值将分别给foo和bar以不同的文件(名为foo.tpl和bar.tpl)。

  现在你想让FastTemplate替换在模板foo中的所有{MACROS}为相应的值。通过发出命令

  <?php

  $tpl->parse(PAGECONTENT, "foo");

  ?>

  来实现。 这个命令将把模板"foo"的内容赋给PAGECONTENT。 当然,我们还没有做完,因为模板bar中为主要的页面定义,FastTemplate需要替换其中的

  {PAGECONTENT}宏。我们也需要给PAGETITLE赋值,如下所做: <?php

  $tpl->assign(PAGETITLE, "FooBar test");

  $tpl->parse(MAIN, "bar");

  ?>

  容易吧,不是吗?我们现在只需要把它输出: <?php

  $tpl->FastPrint(MAIN);

  ?>

  下面三个文件显示了实际练习中的更多的细节描述。我不知道在现实生活了离了这个技术应如何生活 --

  你的设计者会高兴,你的老板会微笑,因为你可以在更短的时间内做更多的事情。

  bar.tpl <!-- bar.tpl -->

  <HTML>

  <HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD>

  <BODY BGCOLOR=BLACK TEXT=WHITE>

  <H1>{PAGETITLE}</H1>

  {PAGECONTENT}

  </BODY>

  </HTML>

  foo.tpl <!-- foo.tpl -->

  很明显示什么都没做。请看{NAME}.

  demo.php3 <?php

  include "class.FastTemplate.php3";

  $tpl = new FastTemplate( ".");

  $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));

  $tpl->assign(NAME, "me");

  $tpl->assign(PAGETITLE, "Welcome!");

  $tpl->parse(PAGECONTENT, "foo");

  $tpl->parse(MAIN, "bar");

  $tpl->FastPrint(MAIN);

  ?>

  创建整个表格

  我也写了一个短的例子,用来演示如何通过单行模板来生成整个表格。它很有效,因为你仍然不需要直

  接修改HTML文档。

  我们增加一个模板的内容到一个已经定义过的唯一命名的后面来创建HTML表格。这个可以通过在调用

  $tpl->parse()时,在模板名前加上一个"."来实现。 <?php

  // 将模板foo的内容赋给TPL1

  $tpl->parse(TPL1, "foo");

  // 在TPL1后附上模板bar的内容

  $tpl->parse(TPL1, ".bar");

  ?>

  page.tpl

  <HTML>

  <HEAD><TITLE>Feature world - {PAGE_TITLE}</TITLE></HEAD>

  <BODY BGCOLOR=BLACK TEXT=WHITE>

  <H1>{PAGE_TITLE}</H1>

  {PAGE_CONTENT}

  </BODY>

  </HTML>

  table.tpl

  <TABLE>

  <TR> <TH>name</TH> <TH>size</TH> </TR>

  {TABLE_ROWS}

  </TABLE>

  table_row.tpl

  <TR>

  <TD>{FILENAME}</TD>

  <TD>{FILESIZE}</TD>

  </TR>

  yad.php3

  <?php

  include "class.FastTemplate.php3";

  function InitializeTemplates() {

  global $tpl;

  $tpl = new FastTemplate( ".");

  $tpl->define( array( page => "page.tpl",

  table => "table.tpl",

  table_row => "table_row.tpl" ) );

  }

  function ReadCurrentDirectory() {

  global $tpl;

  $handle = opendir( ".");

  while($filename = readdir($handle)) {

  $tpl->assign(FILENAME, $filename);

  $tpl->assign(FILESIZE, filesize($filename));

  $tpl->parse(TABLE_ROWS, ".table_row");

  }

  closedir($handle);

  $tpl->parse(PAGE_CONTENT, "table");

  }

  function PrintPage($title) {

  global $tpl;

  $tpl->assign(PAGE_TITLE, $title);

  $tpl->parse(FINAL, "page");

  $tpl->FastPrint(FINAL);

  }

  InitializeTemplates();

  ReadCurrentDirectory();

  Printpage( "Yet Another Demo");

  ?>

  速度讨论

  "Ok," 你可能会说,"一切都太好了。但是它不会影响我的网站的速度吗?"

  不,你的网站可能变得更快。一个简单的原因就是:因为你作为一个编程人员关心的是设计你的应用和编写代码,你的代码将会更有效率,处理相同的任务更容易和更快速。所以,你可能会在上面列出的为什么考虑使用FastTemplate在你的项目中的原因列表中增加另一条理由。

  如果你只是想转换一个已经存在的web站点,性能上的成功可能不会被注意到。我建议在PHP中使用正则表达式缓冲,它将对这种情况有所帮助。因为FastTemplate对每一个宏都使用正则表达式,每一个正则表达式将被只编译一次并且速度上的影响可以忽略不计。
 
 
是否你面临着创建由一个编程人员(可能就是你)和一个设计人员同时进行创作的网站?你不知道如何使工作对你俩来说变得容易吗?我来给你答案:使用FastTemplate来使你的站点更容易定制!   好了,你可能想知道为什么你要使用FastTemplates。 ·可以在几秒钟改变你的整个站点的外观 ·抽象程序设计,没有垃圾HTML代码 ·设计人员不需要关心全部的"模糊"代码 ·令人惊讶地快 ·更容易重用旧的模版(对普通的表单而说)   FastTemplate源于一个有同样名称的Perl软件包(可以在CPAN上找到)。你可以下载PHP 的版本从它的主页(本站下载地址为:http://www.phpe.net/downloads/1.shtml)。你只需要其中的一个类的文件(class.FastTemplate.php)。   让我首先解释一下在使用模板生成一个页面与简单地通过echo或print 将页面输出之间有什么不同吧。 简单地使用echo/print的方法很适合编写短的脚本,但是不能帮助你更好的组织和定制。模板在另一方面给 了你创建多国语言站点的能力,只是通过改动一个参数。他们可以促使你更关心你要做的。   在开始编码之前不要害怕思考。它可能会花费一些时间,但是这些花费会随着项目的发展对你有所回报。   那么,如何应用FastTemplate呢?首先你需要先进行一个简单地调用: <?php $tpl=new FastTemplate ("path"); ?> 传递给它一个路径,是所有你的模板文件存放的目录。它返回一个对象,你可以用它进行参 数赋值,生成页面等等。   FastTemplate是基于这样一种假设:一个很大的页面是由很多小的部分组成的。每一个部分有一个唯一 的名字。最小的部分是赋值给这样有着唯一名字的一段正常的文本字符串。这个可以通过 <?php $tpl->assign(NAME, "text"); ?> 来完成。现在,如果你的一个模板包含{NAME},FastTemplate 就知道你 的意图了。   另外,FastTemplate需要知道你想如何调用你的模板。你需要通过传递一个相关数组(associative array)给 <?php $tpl->define(); ?> 来给它一个提示。 <?php $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl")); ?>   这些赋值将分别给foo和bar以不同的文件(名为foo.tpl和bar.tpl)。   现在你想让FastTemplate替换在模板foo中的所有{MACROS}为相应的值。通过发出命令 <?php $tpl->parse(PAGECONTENT, "foo"); ?> 来实现。 这个命令将把模板"foo"的内容赋给PAGECONTENT。   当然,我们还没有做完,因为模板bar中为主要的页面定义,FastTemplate需要替换其中的 {PAGECONTENT}宏。我们也需要给PAGETITLE赋值,如下所做: <?php $tpl->assign(PAGETITLE, "FooBar test"); $tpl->parse(MAIN, "bar"); ?>   容易吧,不是吗?我们现在只需要把它输出: <?php $tpl->FastPrint(MAIN); ?>   下面三个文件显示了实际练习中的更多的细节描述。我不知道在现实生活了离了这个技术应如何生活 -- 你的设计者会高兴,你的老板会微笑,因为你可以在更短的时间内做更多的事情。 bar.tpl <!-- bar.tpl --> <HTML> <HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD> <BODY BGCOLOR=BLACK TEXT=WHITE> <H1>{PAGETITLE}</H1> {PAGECONTENT} </BODY> </HTML> foo.tpl <!-- foo.tpl --> 很明显示什么都没做。请看{NAME}. demo.php3 <?php include "class.FastTemplate.php3"; $tpl = new FastTemplate( "."); $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl")); $tpl->assign(NAME, "me"); $tpl->assign(PAGETITLE, "Welcome!"); $tpl->parse(PAGECONTENT, "foo"); $tpl->parse(MAIN, "bar"); $tpl->FastPrint(MAIN); ?> 创建整个表格   我也写了一个短的例子,用来演示如何通过单行模板来生成整个表格。它很有效,因为你仍然不需要直 接修改HTML文档。   我们增加一个模板的内容到一个已经定义过的唯一命名的后面来创建HTML表格。这个可以通过在调用 $tpl->parse()时,在模板名前加上一个"."来实现。 <?php // 将模板foo的内容赋给TPL1 $tpl->parse(TPL1, "foo"); // 在TPL1后附上模板bar的内容 $tpl->parse(TPL1, ".bar"); ?> page.tpl <HTML> <HEAD><TITLE>Feature world - {PAGE_TITLE}</TITLE></HEAD> <BODY BGCOLOR=BLACK TEXT=WHITE> <H1>{PAGE_TITLE}</H1> {PAGE_CONTENT} </BODY> </HTML> table.tpl <TABLE> <TR> <TH>name</TH> <TH>size</TH> </TR> {TABLE_ROWS} </TABLE> table_row.tpl <TR> <TD>{FILENAME}</TD> <TD>{FILESIZE}</TD> </TR> yad.php3 <?php include "class.FastTemplate.php3"; function InitializeTemplates() { global $tpl; $tpl = new FastTemplate( "."); $tpl->define( array( page => "page.tpl", table => "table.tpl", table_row => "table_row.tpl" ) ); } function ReadCurrentDirectory() { global $tpl; $handle = opendir( "."); while($filename = readdir($handle)) { $tpl->assign(FILENAME, $filename); $tpl->assign(FILESIZE, filesize($filename)); $tpl->parse(TABLE_ROWS, ".table_row"); } closedir($handle); $tpl->parse(PAGE_CONTENT, "table"); } function PrintPage($title) { global $tpl; $tpl->assign(PAGE_TITLE, $title); $tpl->parse(FINAL, "page"); $tpl->FastPrint(FINAL); } InitializeTemplates(); ReadCurrentDirectory(); Printpage( "Yet Another Demo"); ?> 速度讨论   "Ok," 你可能会说,"一切都太好了。但是它不会影响我的网站的速度吗?"   不,你的网站可能变得更快。一个简单的原因就是:因为你作为一个编程人员关心的是设计你的应用和编写代码,你的代码将会更有效率,处理相同的任务更容易和更快速。所以,你可能会在上面列出的为什么考虑使用FastTemplate在你的项目中的原因列表中增加另一条理由。   如果你只是想转换一个已经存在的web站点,性能上的成功可能不会被注意到。我建议在PHP中使用正则表达式缓冲,它将对这种情况有所帮助。因为FastTemplate对每一个宏都使用正则表达式,每一个正则表达式将被只编译一次并且速度上的影响可以忽略不计。
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
纯美的她_仔婷
苏州河畔_秀气女生
痞子的甘南日记
疑是银河落九天
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有