日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php使用模版开发的实例,PHP-Web应用程序开发:使用模板_php

發(fā)布時(shí)間:2025/3/17 php 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php使用模版开发的实例,PHP-Web应用程序开发:使用模板_php 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

每個(gè)進(jìn)行過(guò)較大型的php-web應(yīng)用程序設(shè)計(jì)的開發(fā)人員大概都有如下的經(jīng)歷:花大量的時(shí)間寫超文本語(yǔ)句,為頁(yè)面排版,兼作美工等;或在整合的程序代碼在和html靜態(tài)頁(yè)面時(shí)花費(fèi)大量的時(shí)間。的確,用腳本語(yǔ)言開發(fā)Web應(yīng)用不容易將數(shù)據(jù)的處理和數(shù)據(jù)的顯示分開,但在多人合作的情況下,如果無(wú)法將數(shù)據(jù)和顯示分開,將大大影響開發(fā)的效率,專業(yè)分工的發(fā)揮。為了解決這個(gè)問(wèn)題,PHP也提供了自己的解決方案,有多種,本文主要介紹PHPLIB中的Template類。

1 模板處理類的設(shè)計(jì)

模板處理類主要需完成以下的任務(wù):

?從模板文件中讀取顯示用的HTML代碼。

?將模板文件和實(shí)際生成的數(shù)據(jù)結(jié)合,生成輸出的結(jié)果。

http://www.gaodaima.com/45872.htmlPHP-Web應(yīng)用程序開發(fā):使用模板_php

?允許同時(shí)處理多個(gè)模板。

?允許模板的嵌套。

?允許對(duì)模板中的某個(gè)單獨(dú)的部分進(jìn)行處理。

歸納上述任務(wù),模板類的設(shè)計(jì)目標(biāo)為:從多個(gè)模板文件中讀入顯示的HTML代碼,將這些顯示代碼中需要?jiǎng)討B(tài)數(shù)據(jù)的地方替換為PHP程序運(yùn)算所得出的數(shù)據(jù),然后按照一定的順序輸出。其中,替換的部分可以自由的設(shè)定。

讀取顯示用的HTML代碼采用讀文件的方式

模板文件和數(shù)據(jù)的結(jié)合采用正則替換

處理多個(gè)模板用數(shù)組存儲(chǔ)來(lái)實(shí)現(xiàn)。

模板的嵌套的實(shí)現(xiàn)主要的想法是:將模板和輸出(任何中間的分析結(jié)果)一視同仁,都可拿來(lái)做替換,即可實(shí)現(xiàn)。

單獨(dú)部分的處理的通過(guò)在模板文件中設(shè)定標(biāo)注,然后在正則替換中結(jié)合標(biāo)注來(lái)控制,實(shí)現(xiàn)部分替換。

2 模板處理類的實(shí)現(xiàn)

請(qǐng)參看PHPLib中的Template.inc,總共345行代碼,有詳細(xì)的注釋。以下列舉一些主要的函數(shù),供研讀參考:

1) function set_file($handle,$filename=” ”) line 77, 讀取文件

2) function set_var($varname, $value = "") line 119, 設(shè)置映射數(shù)據(jù)-替換變量

3) function set_block($parent, $handle, $name = "") line 96, 設(shè)置標(biāo)注

4) function subst($handle) line 136, 執(zhí)行數(shù)據(jù)替換

5) function parse($target, $handle, $append = false) line 165, 執(zhí)行模板文件與數(shù)據(jù)的結(jié)合

6) function p($varname) line 268, 輸出處理結(jié)果

注:本人下載的php-lib7.2c的Template.inc文件中的第95行少了個(gè)“/”,加上后使用正常。

3 模板處理類的使用

3.1 最基本的例子

為了簡(jiǎn)單起見,這里假設(shè)模板文件、使用模板的PHP文件和模板處理類的文件都放在同一個(gè)目錄下。PHPLIB中的習(xí)慣是使用ihtml后綴為模板文件的后綴。

下面是要使用的模板文件:

使用模板的測(cè)試

這是一個(gè)使用模板的測(cè)試文件!

當(dāng)前的時(shí)間是{currenttime}!

注:模板文件和通常的HTML文件差不多,唯一不同的是使用“{}”括起來(lái)的是可以被模板處理類替換的動(dòng)態(tài)內(nèi)容的變量。

接下來(lái)使用模板處理類來(lái)處理上面的模板:

//引入Template類

include("template.inc");

//得到需要替換的數(shù)據(jù)

$timeNow=date("Y-m-d H:i:s",time());

//實(shí)例化一個(gè)Template類

$template= new Template();

//載入test.ihtml模板

$template->set_file("handle1","test.ihtml");

//使用$timeNow的值替換模板中的currenttime

$template->set_var("currenttime",$timeNow);

//進(jìn)行實(shí)際的模板操作

$template->parse("output","handle1");

//輸出最后結(jié)果

$template->p("output");

?>

注:如果只想用PHPLIB中的模板類,只需在文件頭包含Template.inc類即可。

創(chuàng)建Template對(duì)象時(shí),可以指定模板文件路徑,如:new Template(“/htdocs/apps/templates/”),缺省為當(dāng)前路徑。

3.2 模板嵌套與塊設(shè)定

下面這個(gè)例子來(lái)自與PHPLIB的參考手冊(cè),綜合性較強(qiáng),這里需說(shuō)明的一點(diǎn)是設(shè)定塊的目的與嵌套無(wú)關(guān),但這個(gè)范例包含了兩者。請(qǐng)仔細(xì)閱讀,塊設(shè)定是為了避免這種情況:原本可在一個(gè)模板文件(靜態(tài)頁(yè)面)里完成的內(nèi)容,因需要部分循環(huán),而將部分循環(huán)內(nèi)容提取單獨(dú)做成模板文件。請(qǐng)思考,如果不用塊設(shè)定,這個(gè)例子是不是需要3個(gè)模板文件呢?

模板文件1,page.ihtml

{PAGETITLE}

{PAGETITLE}

{OUT}Content

模板文件2,box.ihtml

{TITLE}
{NUM}{BIGNUM}

模板處理文件,test.php

//引入Template類

include("template.inc");

#實(shí)例化一個(gè)Template類,名字叫$t

$t = new Template();

# 建立包含模板文件的數(shù)組

$t->set_file(array(

"page" => "page.ihtml",

"box" => "box.ihtml"));

# 載入模板文件box中的一個(gè)塊row,引用名稱為rows

$t->set_block("box", "row", "rows");

# 設(shè)置替換

$t->set_var(array("TITLE" => "Testpage",

"PAGETITLE" => "hugo"));

# 生成數(shù)據(jù)NUM,BIGNUM

for ($i=1; $i<=3; $i++) {

$n = $i;

$nn = $i*10;

#設(shè)置替換

$t->set_var(array("NUM" => $n, "BIGNUM" => $nn));

#進(jìn)行分析,分析的結(jié)果添加到rows的后面

$t->parse("rows", "row", true);

}

# 生成box,再生成page

$t->parse("OUT", array("box", "page"));

# 輸出最后結(jié)果

$t->p("OUT");

?>

注:這里page.ihtml模板文件中變量的命名與最后的輸出句柄都用了“OUT”。

循環(huán)取值部分采用數(shù)據(jù)庫(kù)類,即可將數(shù)據(jù)的生成與數(shù)據(jù)庫(kù)應(yīng)用結(jié)合起來(lái)。

執(zhí)行結(jié)果如下圖:

模板嵌套與塊設(shè)定執(zhí)行結(jié)果圖

4 小結(jié)

本文主要簡(jiǎn)要介紹了PHPLIB中Template類的設(shè)計(jì)、實(shí)現(xiàn)及使用方法。當(dāng)然,還有許多其他的PHP模板方案,如由Perl中演化而來(lái)的FastTemplates。目前Internet小組采用的是另一種方案,主要的實(shí)現(xiàn)方式是模板文件入庫(kù),采用eval來(lái)實(shí)現(xiàn)數(shù)據(jù)與模板文件的結(jié)合等,相對(duì)來(lái)說(shuō)模板文件的管理與模板處理的使用比較簡(jiǎn)潔,但缺少文件存放的模式。本人目前在做的一些嘗試是將兩者結(jié)合起來(lái),并想在PHPLIB的Template類的基礎(chǔ)上進(jìn)行改進(jìn)。初步的目標(biāo)任務(wù)有兩個(gè):1、在讀取模板文件時(shí)擴(kuò)展其對(duì)數(shù)據(jù)庫(kù)的支持,這樣可以在必要時(shí)增強(qiáng)靈活性與使用數(shù)據(jù)庫(kù)管理工具 2、化簡(jiǎn)模板文件與數(shù)據(jù)的結(jié)合,因?yàn)樵趯?shí)際使用中大多數(shù)情況下無(wú)需將模板文件中的變量在處理程序中再設(shè)置(數(shù)據(jù)變量映射)一遍。

在此也希望讀者、PHP程序愛好者一起參與進(jìn)來(lái),多提寶貴意見,祝好運(yùn)!

歡迎大家閱讀《PHP-Web應(yīng)用程序開發(fā):使用模板_php》,跪求各位點(diǎn)評(píng),若覺(jué)得好的話請(qǐng)收藏本文,by 搞代碼

微信 賞一包辣條吧~

支付寶 賞一聽可樂(lè)吧~

總結(jié)

以上是生活随笔為你收集整理的php使用模版开发的实例,PHP-Web应用程序开发:使用模板_php的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。