仓酷云
标题:
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