金色的骷髅 发表于 2015-2-4 00:20:19

PHP编程:实例进修PHP之FastTemplate模板篇

参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。模板   假如你历来没有接触过PHP,那末仍是先看看这个吧,固然即便是你已对PHP有所懂得,但一本PHP4的的利用手册也仍是需求的,:)。另外一本HTML语法手册固然也是不成短少的啦。。。。。。。。。。

   在网站开辟过程当中你是否是常常面临改版的忧??几百几千个文件由于版式上的一点小变更就需求全体从头处置,是否是让你头痛非常?唉,假如可以把内容和体现模式分隔就行了,这可是咱们一向翘首守候的。但惋惜用于处置这个成绩的XML还未完整的成熟。岂非除此以外就没有举措了吗?正所谓器材是逝世的,人倒是活的,咱们明天要进修的这个php库,就能够匡助咱们在必定水平上处置这个成绩。:))

   FastTemplate是甚么?从PHP言语下去讲它是一个PHP库;从它的发源来讲它源于一个一样称号的Perl软件包;从用处下去讲是一个可让你在几秒内改动全部站点外不雅的适用东西。用最浅显的言语来讲,它就是一个模板,一个相似DreamWaver中的模板。如今FastTemplate在你心里是一个问号?仍是一个感慨号?又或是一个句号?(编纂:靠,在这骗稿费呀,我扁!)算了,不论那末多,你只需晓得他是好器材就成,:)

   起首在咱们利用这个库之前固然要先下载它,人人可以鄙人面这个网址http://www.thewebmasters.net/php/下载它(本站下载地址为: http://www.phpe.net/downloads/1.shtml)。下载以后呢把它解紧缩到你的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()停止输入

我的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。

谁可相欹 发表于 2015-2-4 11:54:04

Ps:以上纯属原创,如有雷同,纯属巧合

山那边是海 发表于 2015-2-9 03:29:17

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

蒙在股里 发表于 2015-2-10 21:38:29

兴趣是最好的老师,百度是最好的词典。

小魔女 发表于 2015-3-1 14:07:55

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

仓酷云 发表于 2015-3-10 12:49:56

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

变相怪杰 发表于 2015-3-17 07:09:59

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

飘飘悠悠 发表于 2015-3-23 17:32:11

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

愤怒的大鸟 发表于 2015-3-27 04:09:25

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

分手快乐 发表于 2015-4-1 09:09:43

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

第二个灵魂 发表于 2015-4-5 11:09:03

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

柔情似水 发表于 2015-4-12 15:30:15

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

金色的骷髅 发表于 2015-4-13 15:25:29

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

若相依 发表于 2015-4-15 13:31:11

实践是检验自己会不会的真理。

因胸联盟 发表于 2015-4-21 00:50:16

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

深爱那片海 发表于 2015-4-26 21:17:40

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

小女巫 发表于 2015-5-11 21:17:27

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

admin 发表于 2015-5-12 08:09:14

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

不帅 发表于 2015-6-14 18:53:45

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
页: [1]
查看完整版本: PHP编程:实例进修PHP之FastTemplate模板篇