仓酷云

标题: PHP网页编程之PHP3 之 FastTemplate [打印本页]

作者: 若相依    时间: 2015-2-4 00:20
标题: PHP网页编程之PHP3 之 FastTemplate
一下弹出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结合起来完成简单动态页面
作者: 小女巫    时间: 2015-2-4 11:58
爱上php,他也会爱上你。
作者: 活着的死人    时间: 2015-2-10 04:07
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 冷月葬花魂    时间: 2015-2-10 13:40
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 飘飘悠悠    时间: 2015-3-1 11:01
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: admin    时间: 2015-3-3 14:17
兴趣是最好的老师,百度是最好的词典。
作者: 老尸    时间: 2015-3-7 15:51
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 莫相离    时间: 2015-3-15 08:32
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 小魔女    时间: 2015-3-21 21:36
爱上php,他也会爱上你。
作者: 分手快乐    时间: 2015-3-23 22:48
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 只想知道    时间: 2015-3-26 05:01
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 山那边是海    时间: 2015-3-27 11:09
爱上php,他也会爱上你。
作者: 简单生活    时间: 2015-4-4 01:24
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 飘灵儿    时间: 2015-4-7 04:40
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 海妖    时间: 2015-4-10 23:47
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 仓酷云    时间: 2015-4-12 18:03
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 深爱那片海    时间: 2015-4-21 13:23
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 若相依    时间: 2015-4-23 06:19
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 精灵巫婆    时间: 2015-5-5 01:34
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 爱飞    时间: 2015-5-6 04:12
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2