|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧! 当你在创立一个站点的时分,能够不能不面临以下实际:
站点需求一位法式员来设计法式和一位网站设计者来组织页面。那末,是不是有使二者很好的联合起来的办法呢?
有的,就是利用模板(FastTemplate:这个法式在本站的“法式和代码”中可以找到),这将会使你的任务加倍轻松。
上面注释一下利用模板的优点:
1、在很短的工夫内可以交换全部站点的外不雅
2、使法式员可以笼统编程,而不必接触HTML代码
3、速度十分之快
4、可以反复使用之前的模板
模板的来历:FastTemplate来自于同名的Perl软件包(在CPAN上可以找到)。 它被移植到了PHP3平台上。你只需求一个基本类文件class.FastTemplate.php3
先注释一下利用模板和利用echo或print号令创立html页面的区分,echo和 print在编写短小的剧本时显得十分适用,然而做出来的剧本的组织性和可定制性欠好,修正起来颇废功夫,模板在编写撑持多国语种的站点时的效力则要高的多,如用echo和print可以想象任务量之大。
不必忧虑,纯熟利用FastTemplate会占去你一局部工夫,然而这些工夫会在你 今后的任务中填补回来,特别是大工程时。
那末,怎样利用FastTemplate呢?
第一步,只需利用函数<?php $tpl = new FastTemplate( "path"); ?>,个中path指向template目次地点的途径。这句函数创立了一个$tpl对象,今后可以对它指定参数,停止处置或用来创立各类页面等等。
FastTemplate是创立在这么一种实际基本之上的,即假定一个web页是由很多小的局部构成的。举例来讲,如WEB页细分为TITLE、PAGE、FOOT等等。全部页被付与一个变量名,每个小局部又被付与一个变量名,最小的不成朋分的局部凡是就是字符串了,它也被付与一个变量名。详细处置的时分,是一层层的包括关系。被包括局部在上一层中以宏{NAME}的模式呈现。最初经由一层层的向上输入,失掉完全的页面。
那末最底层的向字符串赋值的函数是甚么呢,就是:
<?php $tpl->assign(NAME, "text"); ?>
经由过程这个功效,FastTemplate将字符串text付与了变量NAME,今后上一层便可交换宏{NAME}的内容为text。
例如:
$tpl->assign(NAME, "me");
这就将变量NAME赋值了字符串"me"。
第二步,$tpl需求晓得其所挪用的一切模板文件,即各个小局部。这个功效由define一个数组完成:
<?php $tpl->define(); ?>
例如:
<?php $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl")); ?>
这申明总共包含了两个模板文件:foo.tpl和bar.tpl,并给它们指定了名字foo和bar。
有了第一节的常识今后,你如今是不是想试一试将模板文件中所包括的宏
{MACROS}局部依照本人界说的变量交换呢?利用以下的号令便可完成:
<?php
$tpl->parse(PAGECONTENT, "foo");
?>
这条号令的详细意义是:
咱们起首已用assign界说了FOO模板中包括的若干宏变量,然后依据这些变量对模板文件FOO停止交换处置,并将交换后的模板文件付与另外一个变量名PAGECONTENT。
完全以下:
<?php
$tpl->assign(NAME, "me");
$tpl->parse(PAGECONTENT, "foo");
?>
固然,咱们还没有作完,由于bar模板文件才是WEB的主输入局部,BAR模板包括着FOO模板,BAR中还包括着宏变量{PAGETITLE}和{PAGECONTENT}守候处置,PAGECONTENT经由对FOO的处置已失掉,PAGETITLE还未指定,所以还要还要指定PAGETITLE,并挪用函数
<?php $tpl->parse(MAIN, "bar"); ?>
停止处置,并将处置后的了局付与变量MAIN。
以下:
<?php
$tpl->assign(PAGETITLE, "FooBar test");
$tpl->parse(MAIN, "bar");
?>
很复杂吧,最初咱们只需输入页面便可:
<?php
$tpl->FastPrint(MAIN);
?>
上面就是foo.tpl,bar.tpl与终究的demo.php3文件。
请人人细心揣摩揣摩:
-------------------------------------------------------------
foo.tpl
<!-- foo.tpl -->
This does not do anything obvious. Please look at {NAME}.
-------------------------------------------------------------
bar.tpl
<!-- bar.tpl -->
<HTML>
<HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD>
<BODY BGCOLOR=BLACK TEXT=WHITE>
<H1>{PAGETITLE}</H1>
{PAGECONTENT}
</BODY>
</HTML>
------------------------------------------------------------
demo.php3
<?php
include "class.FastTemplate.php3";
$tpl = new FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));
$tpl->assign(NAME, "me");
$tpl->parse(PAGECONTENT, "foo");
$tpl->assign(PAGETITLE, "Welcome!");
$tpl->parse(MAIN, "bar");
$tpl->FastPrint(MAIN);
?>
------------------------------------------------------------
编制一个表格的例子:
经由以上的论述,人人是不是已分明一点了。
上面是一个处置表格的例子,起首咱们再学一些新常识。
当咱们当处置完foo模板后,并付与了变量TPL1,咱们可以将bar模板的内容处置后追加进TPL1中,如许就不用界说过量变量,也易于了解,例处置完页面的title后将content局部追加出来,最初将foot追加,生成完全一个页面再输入。这条号令就是:
<?php $tpl->parse(TPL1, ".bar"); ?>
个中的.暗示追加。
以下:
<?php
# 处置模板foo,并付与变量TPL1
$tpl->parse(TPL1, "foo");
# 处置模板bar,并追加进变量TPL1
$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");
?>
关于速度的最初一点会商:
看完以上的例子,你会说“太棒了!大度,然而,速度怎样呢?”
没成绩,你的站点会变得很快。复杂的说:由于你是一个法式员,你应当存眷于法式代码的设计,代码应当加倍无效率,应轻易修正和轻易了解。利用FastTemplate可以可以匡助你做到这一点,所以它使你的任务加倍轻松一些。
假如你想替换一个已建好的Web站点,咱们建议利用regex(交换表达式)来交换,实践上FastTemplate利用的就是regex 来交换模板中的宏。 学习如何将PHP与HTML结合起来完成简单动态页面 |
|