PHP网页设计实例进修PHP之FastTemplate 模板篇
因为函数实在是太多了,慢慢的你就会知道,知道有这个函数就可以。模板 假如你历来没有接触过PHP,那末仍是先看看这个吧,固然即便是你已对PHP有所懂得,但一本PHP4的的利用手册也仍是需求的,:)。另外一本HTML语法手册固然也是不成短少的啦。。。。。。。。。。在网站开辟过程当中你是否是常常面临改版的忧??几百几千个文件由于版式上的一点小变更就需求全体从头处置,是否是让你头痛非常?唉,假如可以把内容和体现模式分隔就行了,这可是咱们一向翘首守候的。但惋惜用于处置这个成绩的XML还未完整的成熟。岂非除此以外就没有举措了吗?正所谓器材是逝世的,人倒是活的,咱们明天要进修的这个php库,就能够匡助咱们在必定水平上处置这个成绩。:))
FastTemplate是甚么?从PHP言语下去讲它是一个PHP库;从它的发源来讲它源于一个一样称号的Perl软件包;从用处下去讲是一个可让你在几秒内改动全部站点外不雅的适用东西。用最浅显的言语来讲,它就是一个模板,一个相似DreamWaver中的模板。如今FastTemplate在你心里是一个问号?仍是一个感慨号?又或是一个句号?(编纂:靠,在这骗稿费呀,我扁!)算了,不论那末多,你只需晓得他是好器材就成,:)
起首在咱们利用这个库之前固然要先下载它(编纂:'空话,又骗稿费啊' 。地藏:'好吧,好吧,我不说了。:( '。),人人可以鄙人面这个网址http://www.thewebmasters.net/php/下载它。下载以后呢把它解紧缩到你的web办事器的一个目次上,上面是解紧缩后的目次布局
FastTemplate-1.1.0/
FastTemplate-1.1.0/README < - 这个文件就不必说了吧?
FastTemplate-1.1.0/class.FastTemplate.php3 < - 这个文件最主要,它就库文件,中心耶!
FastTemplate-1.1.0/example_1.phtml < - 一个例子
FastTemplate-1.1.0/example_2.phtml < - 第二个例子
FastTemplate-1.1.0/example_3.phtml < - 第三个例子
FastTemplate-1.1.0/dynamic_example.phtml < - 第四个例子
FastTemplate-1.1.0/docs/ < - 文档目次
FastTemplate-1.1.0/docs/FastTemplate.3 < - Unix man page
FastTemplate-1.1.0/docs/FastTemplate.html < - HTML documentation
FastTemplate-1.1.0/templates/ < - 模板例子的目次
FastTemplate-1.1.0/templates/begin.tpl
FastTemplate-1.1.0/templates/header.tpl
FastTemplate-1.1.0/templates/main.tpl
FastTemplate-1.1.0/templates/row.tpl
FastTemplate-1.1.0/templates/test.tpl
FastTemplate-1.1.0/templates/footer.tpl
FastTemplate-1.1.0/templates/htaccess.tpl
FastTemplate-1.1.0/templates/middle.tpl
FastTemplate-1.1.0/templates/table.tpl
注重哟,这个目次必定如果php法式可以会见的目次哟,换句话说就是php.ini里谁人include目次。然后呢,利用php4编程的伴侣注重了,你如今还不克不及直接利用这个库,还需求人工做些修正!等下注重看上面。php3的读者就不必管那末多,如今就能够试一下它带的那几个例子了,(嘿嘿,不外呢,它那些例子的后缀名满是phtml,假如你没举措设置web的话。你可以测验考试把后缀名改改看,应当也能够用,地藏没有试过不敢打包票。)那!接着呢,php4的兄弟可万万要注重哟,假如不你不按上面的修正的话,这个库可是没有举措用的哟!!
--- class.FastTemplate.php3 Sun Jun 27 13:44:47 1999
+++ php4.FastTemplate.php3 Tue Jul 20 10:49:25 1999
@@ -196,8 +196,10 @@
settype($val,"string");
}
- $template = ereg_replace("{$key}","$val","$template");
- //$template = str_replace("{$key}","$val","$template");
+ // php4 doesn't like '{$' combinations.
+ $key = '{'."$key".'}';
+ $template = ereg_replace("$key","$val","$template");
+ //$template = str_replace("$key","$val","$template");
}
}
@@ -410,7 +412,7 @@
}
if($end)
{
- $newParent .= "{$MacroName}
";
+ $newParent .= '{'."$MacroName}
";
}
// Next line please
if($end) { $end = false; }
人人用文本编纂器翻开class.FastTemplate.php3文件,找到下面的局部。'-'减号代表消弭这行,'+'加号代表到场这行。别的windows体系下的伴侣注重哟!你们还需求改点小器材,把上面的谁人$win32变量的值改成true,不改的话,用不了可别骂我,;)。
var $WIN32 = true; // Set to true if this is a WIN32 server
改好后,人人就能够尝尝他的那几个例子了。 若何?胜利了吧。嘿嘿嘿嘿~~~,地藏不会骗人人的啦。
OK,如今这个库已可以用啦,咱们筹办停止上面的进修吧,:)
若何利用这个库?复杂哟,起首要把这个库包括出去。也就是说呢,要 include "class.FastTemplate.php3"; 然后?呵呵…… 然后我也不晓得啦!(编纂:"嘿!找扁啊,你!")啊,啊…!Sorry,我想起来了(在地藏被众编纂海扁一顿以后)。然后是进修这个库的利用道理。在这里呢咱们先做个假定。
咱们假定一个页面是由良多的小的局部构成(好比:每一个网站都有分栏目导航等等),并且每一个小的局部都有一个独一的标识符(好比:咱们把分栏每一个小项界说为一个名字)
咱们起首以这个库自带的example_1为例,让人人可以尽快的学会这个库的根基用法,;),不外人人要注重哟,这几个文件在办事器上的地位要按解压时的绝对途径来存,万万不要健忘,就象不要健忘你女伴侣的诞辰一样。呵呵~~~~
< ?
// Example FastTemplate Demo #1 - The example from the man page
Header("Content-type: text/plain");
include("class.FastTemplate.php3");
$tpl = new FastTemplate("./templates");
$tpl- >define(
array(
main = > "main.tpl",
table = > "table.tpl",
row = > "row.tpl"
)
);
$tpl- >assign( array( TITLE = > "FastTemplate Test") );
for ($n=1; $n < = 3; $n++)
{
$Number = $n;
$BigNum = $n*10;
$tpl- >assign(
array(
NUMBER = > $Number,
BIG_NUMBER = > $BigNum
)
);
$tpl- >parse(ROWS,".row");
}
$tpl- >parse(MAIN, array("table","main"));
$tpl- >FastPrint();
exit;
? >
< !-- NAME: main.tpl -- >
< html >
< head >< title > {TITLE} < /title >
< /head >
< body >
{MAIN}
< /body >
< /html >
< !-- END: main.tpl -- >
< !-- NAME: table.tpl -- >
< table border='1' >
{ROWS}
< /table >
< !-- END: table.tpl -- >
< !-- NAME: row.tpl -- >
< tr >
< td >{NUMBER}< /td >
< td >{BIG_NUMBER}< /td >
< /tr >
< !-- END: row.tpl -- >
利用这个库起首要如后面所说的 include "class.FastTemplate.php3"; 然后是界说模板地点目次$tpl = new FastTemplate("./templates");注重哟!这里由于我是在windows体系运转,所以用的是"./templates",在Linux或UNIX中能够纷歧样,人人依据详细情形来设定。然后呢,咱们对应分歧的模板,界说上面这个矩阵数组。$tpl- >define( array( main = > "main.tpl", table = > "table.tpl", row = > "row.tpl" ) ); define是这个类中的一个函数。上面是它的语法:define( array( key,value pairs) ) ,define()函数映照一个名字到模板文件上,这个新的名字将是你用来代表模板的独一名字,由于除此以外再不会有模板文件名呈现。并且人人注重,这是利用类时决不克不及短少的步调,不克不及少的哟,假如少了那就和你不带诞辰礼品去你女伴侣的诞辰Party有异曲同工之妙,嘿嘿嘿~~~~
如今!关头的,最有特性的器材来了!assign( (key,value pair) 或 assign ( array(key value pairs) ) 这个函数将把你在模板中界说的标识符界说为你网页上真正想要的器材。好比就象是下面$tpl- >assign( array( TITLE = > "FastTemplate Test") ); 这句,将模板main.tpl里的{TITLE}交换为 FastTemplate Test 看不懂想不明的伴侣多看看下面的那些代码。接着呢!接着是别的一个很有特征的东东。parse(RETURN, FileHandle(s) ) 将一个已界说模板拔出的界说到别的一个模板文件中。人人细心研讨上面的代码,信任会对照轻易懂得。
for ($n=1; $n < = 3; $n++)
{
$Number = $n;
$BigNum = $n*10;
$tpl- >assign(
array(
NUMBER = > $Number,
BIG_NUMBER = > $BigNum
)
);
$tpl- >parse(ROWS,".row");
}
parse这个函数有三种用法
$tpl- >parse(MAIN, "main"); // 尺度
$tpl- >parse(MAIN, array ( "table", "main") ); // 简约
$tpl- >parse(MAIN, ".row"); // 增添
个中以第三种最成心思,它暗示的是在本来已有的基本上再加上一个新数据。呵呵,这么说人人能够没法分明,咱们仍是看看再多研讨一下下面的源代码吧,究竟编程这器材有良多是只可领悟不成言传的!(上面附上英文的申明,不是地藏想偷懒不翻译,其实是有些器材看原味的比翻译的加倍轻易了解呀,
In the regular version, the template named ``main'' is loaded if it hasn't been already, all the variables are interpolated, and the result is then stored in FastTemplate as the value MAIN. If the variable '{MAIN}' shows up in a later template, it will be interpolated to be the value of the parsed ``main'' template. This allows you to easily nest templates, which brings us to the compound style.
The compound style is designed to make it easier to nest templates.
The following are equivalent:
$tpl- >parse(MAIN, "table");
$tpl- >parse(MAIN, ".main");
// is the same as:
$tpl- >parse(MAIN, array("table", "main"));
// this form saves function calls and makes your code cleaner
It is important to note that when you are using the compound form, each template after the first, must contain the variable that you are parsing the results into. In the above example, 'main' must contain the variable '{MAIN}', as that is where the parsed results of 'table' is stored. If 'main' does not contain the variable '{MAIN}' then the parsed results of 'table' will be lost. The append style allows you to append the parsed results to the target variable. Placing a leading dot . before a defined file handle tells FastTemplate to append the parsed results of this template to the returned results. This is most useful when building tables that have an dynamic number of rows - such as data from a database query. )
最初在完成下面的进程后,就能够停止输入了,FastTemplate库利用利用FastPrint(HANDLE) 来停止输入。
$tpl- >FastPrint();
在经由下面的这些步调后,人人对利用FastTemplate库的进程是不是清晰分明呢?地藏尝尝把下面的进程总结一下,看看对列位伴侣是不是有匡助:
起首:将库用include加出去
其次:界说一个类变量,在上例中是$tpl
再次:界说各类最小元素,好比下面的$tpl = new FastTemplate("./templates");
然后:使用parse函数将各类最小元素停止组合起来
最初:用FastPrint()停止输入
下面就是利用FastTemplate的最复杂的进程了。地藏写的欠好,也不晓得人人能从中学到几何,《:-)在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 Ps:以上纯属原创,如有雷同,纯属巧合 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 基础有没有对学习php没有太大区别,关键是兴趣。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 兴趣是最好的老师,百度是最好的词典。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 兴趣是最好的老师,百度是最好的词典。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。
页:
[1]
2