六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

PHP3 之 FastTemplate

[摘要]當(dāng)你在建立一個(gè)站點(diǎn)的時(shí)候,可能不得不面對(duì)以下現(xiàn)實(shí): 站點(diǎn)需要一名程序員來設(shè)計(jì)程序和一名網(wǎng)站設(shè)計(jì)者來組織頁面。那么,是否有使兩者很好的結(jié)合起來的方法呢? 有的,就是使用模板(FastTemplate:這個(gè)程序在本站的“程序和代碼”中可以找到),這將會(huì)使你的工作更加輕松。 下面解釋一下使用模板的好處:...
當(dāng)你在建立一個(gè)站點(diǎn)的時(shí)候,可能不得不面對(duì)以下現(xiàn)實(shí):
站點(diǎn)需要一名程序員來設(shè)計(jì)程序和一名網(wǎng)站設(shè)計(jì)者來組織頁面。那么,是否有使兩者很好的結(jié)合起來的方法呢?

有的,就是使用模板(FastTemplate:這個(gè)程序在本站的“程序和代碼”中可以找到),這將會(huì)使你的工作更加輕松。

下面解釋一下使用模板的好處:

1、在很短的時(shí)間內(nèi)可以替換整個(gè)站點(diǎn)的外觀
2、使程序員可以抽象編程,而無須接觸HTML代碼
3、速度非常之快
4、可以重復(fù)利用以前的模板

模板的來歷:FastTemplate來自于同名的Perl軟件包(在CPAN上可以找到)。 它被移植到了PHP3平臺(tái)上。你只需要一個(gè)基礎(chǔ)類文件class.FastTemplate.php3

先解釋一下使用模板和使用echo或print命令建立html頁面的區(qū)別,echo和 print在編寫短小的腳本時(shí)顯得非常實(shí)用,但是做出來的腳本的組織性和可定制性不好,修改起來頗廢工夫,模板在編寫支持多國(guó)語種的站點(diǎn)時(shí)的效率則要高的多,如用echo和print可以想象工作量之大。

不用擔(dān)心,熟練使用FastTemplate會(huì)占去你一部分時(shí)間,但是這些時(shí)間會(huì)在你 以后的工作中彌補(bǔ)回來,尤其是大工程時(shí)。

那么,怎么使用FastTemplate呢?

第一步,只需使用函數(shù)<?php $tpl = new FastTemplate( "path"); ?>,其中path指向template目錄所在的路徑。這句函數(shù)建立了一個(gè)$tpl對(duì)象,以后可以對(duì)它指定參數(shù),進(jìn)行處理或用來建立各種頁面等等。

FastTemplate是建立在這么一種理論基礎(chǔ)之上的,即假定一個(gè)web頁是由許多小的部分組成的。舉例來說,如WEB頁細(xì)分為TITLE、PAGE、FOOT等等。整個(gè)頁被賦予一個(gè)變量名,每一個(gè)小部分又被賦予一個(gè)變量名,最小的不可分割的部分通常就是字符串了,它也被賦予一個(gè)變量名。具體處理的時(shí)候,是一層層的包含關(guān)系。被包含部分在上一層中以宏{NAME}的形式出現(xiàn)。最后經(jīng)過一層層的向上輸出,得到完整的頁面。

那么最底層的向字符串賦值的函數(shù)是什么呢,就是:

<?php $tpl->assign(NAME, "text"); ?>

通過這個(gè)功能,F(xiàn)astTemplate將字符串text賦予了變量NAME,以后上一層就可替換宏{NAME}的內(nèi)容為text。

例如:

$tpl->assign(NAME, "me");

這就將變量NAME賦值了字符串"me"。

第二步,$tpl需要知道其所調(diào)用的所有模板文件,即各個(gè)小部分。這個(gè)功能由define一個(gè)數(shù)組實(shí)現(xiàn):

<?php $tpl->define(); ?>

例如:

<?php $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl")); ?>

這說明總共包括了兩個(gè)模板文件:foo.tpl和bar.tpl,并給它們指定了名字foo和bar。

有了第一節(jié)的知識(shí)以后,你現(xiàn)在是否想試一試將模板文件中所包含的宏
{MACROS}部分按照自己定義的變量替換呢?使用以下的命令即可實(shí)現(xiàn):

<?php

$tpl->parse(PAGECONTENT, "foo");

?>

這條命令的具體意義是:

我們首先已經(jīng)用assign定義了FOO模板中包含的若干宏變量,然后根據(jù)這些變量對(duì)模板文件FOO進(jìn)行替換處理,并將替換后的模板文件賦予另一個(gè)變量名PAGECONTENT。

完整如下:

<?php

$tpl->assign(NAME, "me");
$tpl->parse(PAGECONTENT, "foo");

?>

當(dāng)然,我們還沒有作完,因?yàn)閎ar模板文件才是WEB的主輸出部分,BAR模板包含著FOO模板,BAR中還包含著宏變量{PAGETITLE}和{PAGECONTENT}等待處理,PAGECONTENT經(jīng)過對(duì)FOO的處理已經(jīng)得到,PAGETITLE還未指定,所以還要還要指定PAGETITLE,并調(diào)用函數(shù)

<?php $tpl->parse(MAIN, "bar"); ?>

進(jìn)行處理,并將處理后的結(jié)果賦予變量MAIN。

如下:

<?php

$tpl->assign(PAGETITLE, "FooBar test");
$tpl->parse(MAIN, "bar");

?>

很簡(jiǎn)單吧,最后我們只需輸出頁面即可:

<?php

$tpl->FastPrint(MAIN);

?>

下面就是foo.tpl,bar.tpl與最終的demo.php3文件。
請(qǐng)大家仔細(xì)琢磨琢磨:

-------------------------------------------------------------
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);

?>
------------------------------------------------------------

編制一個(gè)表格的例子:

經(jīng)過以上的闡述,大家是否已經(jīng)明白一點(diǎn)了。
下面是一個(gè)處理表格的例子,首先我們?cè)賹W(xué)一些新知識(shí)。

當(dāng)我們當(dāng)處理完foo模板后,并賦予了變量TPL1,我們可以將bar模板的內(nèi)容處理后追加進(jìn)TPL1中,這樣就不必定義過多變量,也易于理解,例處理完頁面的title后將content部分追加進(jìn)去,最后將foot追加,生成完整一個(gè)頁面再輸出。這條命令就是:
<?php $tpl->parse(TPL1, ".bar"); ?>
其中的.表示追加。

如下:

<?php

# 處理模板foo,并賦予變量TPL1
$tpl->parse(TPL1, "foo");

# 處理模板bar,并追加進(jìn)變量TPL1
$tpl->parse(TPL1, ".bar");

?>

下面是一個(gè)完整的表格例子,大家好好揣摸揣摸

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");

?>

關(guān)于速度的最后一點(diǎn)討論:

看完以上的例子,你會(huì)說“太棒了!漂亮,但是,速度怎么樣呢?”

沒問題,你的站點(diǎn)會(huì)變得很快。簡(jiǎn)單的說:因?yàn)槟闶且粋(gè)程序員,你應(yīng)該關(guān)注于程序代碼的設(shè)計(jì),代碼應(yīng)該更加有效率,應(yīng)容易修改和容易理解。使用FastTemplate可以可以幫助你做到這一點(diǎn),所以它使你的工作更加輕松一些。

如果你想替代一個(gè)已經(jīng)建好的Web站點(diǎn),我們建議使用regex(替換表達(dá)式)來替換,實(shí)際上FastTemplate使用的就是regex 來替換模板中的宏。


標(biāo)簽:PHP3 之 FastTemplate 

相關(guān)文章

主站蜘蛛池模板: 手机在线成人精品视频网 | 欧美在线综合视频 | 日韩视频在线免费观看 | 中国国产一国产一级毛片视频 | 欧美午夜精品久久久久免费视 | 色在线网站免费观看 | 青青青国产精品国产精品美女 | 中文在线观看免费网站 | 天天摸夜夜添久久精品麻豆 | 日本亚洲天堂网 | 日本大片网 | 天天曰天天 | 综合第一页| 亚洲精品在线视频观看 | 性人久久久久 | 亚洲一区二区成人 | 亚洲福利精品一区二区三区 | 天天色姑娘 | 新版天堂资源中文在线 | 日韩深夜福利视频 | 欧美一区二区三区男人的天堂 | 日韩中文视频 | 午夜视频在线观看完整版 | 青草青青高清影院在线观看 | 日本美女久久 | 日本激情一区二区三区 | 欧美亚洲图区 | 全部免费毛片 | 青草久久精品亚洲综合专区 | 中文字幕免费在线视频 | 中文字幕色网站 | 日韩国产在线观看 | 天天天天做夜夜夜夜 | 先锋色资源 | 伊人久久天堂 | 青青草免费在线观看 | 日日摸夜夜添夜夜爽免费视频 | 日日干夜夜操视频 | 日本高清免费不卡在线播放 | 日日干夜夜骑 | 四虎成人免费大片在线 |