如果你正在設(shè)計(jì)一個(gè)交互式網(wǎng)站,,你一定會(huì)關(guān)注兩個(gè)主要的問(wèn)題,,就是美工和程序。這也是一個(gè)網(wǎng)站在建設(shè)中拋開(kāi)其內(nèi)容之后最關(guān)鍵的要素,。通常有兩種方式來(lái)協(xié)調(diào)美工和程序之間的關(guān)系: 1.先做好美工頁(yè)面,,然后由程序員直接在美工頁(yè)面的HTML文件中嵌入ASP、JSP,、PHP等程序代碼,。 2.美工和程序同時(shí)進(jìn)行,但這時(shí)因?yàn)闆](méi)有頁(yè)面框架,,程序只能做出一些關(guān)鍵代碼,,雙方完成后再進(jìn)行一次美工頁(yè)面和程序代碼的嵌入合成,。 在實(shí)際的網(wǎng)站建設(shè)過(guò)程中,由于人員,、進(jìn)度等環(huán)境的限制,,大家通常會(huì)混合地使用上面兩種協(xié)調(diào)方式。然而這兩種方法都有不足之處: 1. 效率不高,。兩者協(xié)調(diào)不好可能產(chǎn)生等待,、重復(fù)代碼調(diào)試步驟等現(xiàn)象; 2. 調(diào)試不暢,。由于程序代碼最終需要嵌入在HTML頁(yè)面中,,代碼的嵌入、調(diào)試,、糾錯(cuò)都比較繁瑣,; 3. 維護(hù)不便。一旦美工設(shè)計(jì)需要修改,如網(wǎng)站改版,,那么所有程序和HTML代碼混合頁(yè)面都需要重寫(xiě),; 如果你正在使用PHP程序建設(shè)網(wǎng)站,那么恭喜你,,PHP的模板技術(shù)會(huì)比較圓滿地解決上述問(wèn)題,。 那么什么是PHP的模板技術(shù)?PHP模板即PHPlib的Template技術(shù),,是PHPLIB程序庫(kù)中的一個(gè)主要模塊之一,,發(fā)展自Perl的Template。而PHPLIB則是在PHP上的一個(gè)擴(kuò)展,,提供了很多類(lèi)庫(kù),,能夠方便地實(shí)現(xiàn)一些基本功能如用戶認(rèn)證,數(shù)據(jù)庫(kù)封裝等,。我們可以在phplib.netuse.de上下載到其最新版本,。要使用PHP模板,只需在PHPLIB的程序包中解開(kāi)template.inc文件,,并放到我們的PHP程序能夠調(diào)用的目錄里,。 剝開(kāi)神秘的面紗,模板技術(shù)的核心概念簡(jiǎn)單得令人心跳:要將你的美工頁(yè)面指定為模板文件,,只需將頁(yè)面中活動(dòng)的內(nèi)容如數(shù)據(jù)庫(kù)輸出,,用戶交互等部分定義成形式為{variable}的變量放在模板文件中相應(yīng)的位置,當(dāng)用戶瀏覽時(shí),,由PHP程序文件打開(kāi)該模板文件,,將模板文件中定義的變量進(jìn)行替換,當(dāng)然,,替換成對(duì)應(yīng)的數(shù)據(jù)庫(kù)輸出或者用戶交互等動(dòng)態(tài)生成內(nèi)容,,舉例如下: 定義模板文件:Mytemplate.html Mytemplte.html的內(nèi)容為: <html> ..... <body> ... <!--這可以是一個(gè)版面極其復(fù)雜的HTML頁(yè)面--> 今天是{today} <!--需要替換的變量以{..}形式存在--> ... </body> </html> 我們可以看到,,事實(shí)上模板文件就是一個(gè)普通的HTML文件,它包含了你所想要的版面,、美工等要素,,而內(nèi)部的活動(dòng)內(nèi)容則以變量的形式存在,并等待被替換,。顯然,,模板文件直接被瀏覽是毫無(wú)意義的,因?yàn)樗话魏蜳HP程序,,所有的內(nèi)容都是“死”的,,現(xiàn)在我們來(lái)看看,怎樣來(lái)調(diào)用模板,,讓它“活動(dòng)”起來(lái),。 假設(shè)我們?cè)趖est.php文件中使用了上述模板,當(dāng)用戶瀏覽test.php文件時(shí),,test.php文件處理過(guò)程如下: test.php <?php mydate=date("Y年m月d日"); //處理好變量的值 include("template.inc"); //調(diào)入將模板程序模塊 mytemp = new Template("/你的模板文件所在目錄/"); //創(chuàng)建一個(gè)模板實(shí)例mytemp,,如果模板就在當(dāng)前目錄,那么使用"."就可以 mytemp->set_file("MyFileHandle","MyTemplate.html"); //設(shè)置MyFileHandle文件句柄指向我們所要調(diào)用的模板文件Mytemplate.html mytemp->set_var("today", mydate); //調(diào)用模板的set_var方法,,設(shè)置模板中的變量today值為$mydate mytemp->parse("MyOutput","MyFileHandle"); //調(diào)用模板的parse方法,,對(duì)MyFileHandle文件句柄所指向的模板文件進(jìn)行分析,替換其中相應(yīng)變量 //并把替換結(jié)果即完整的HTML文件內(nèi)容保存在字串變量MyOutput中 mytemp->p("MyOutput"); // 打印輸出結(jié)果字串變量MyOutput的值 ?> 就是這么簡(jiǎn)單,,模板技術(shù)很輕松地把網(wǎng)站設(shè)計(jì)分離成了清晰的美工和程序兩個(gè)方面,,并把他們的成果簡(jiǎn)單方便地結(jié)合了起來(lái),。如美工設(shè)計(jì)需要修改,,那么我們只要記住原模板中各個(gè)變量名,把他們插入到新模板中對(duì)應(yīng)位置就可以了,。真的很輕松,!另一方面,在PHP程序中基本沒(méi)有了PHP腳本和HTML語(yǔ)法混合的現(xiàn)象,,很大地提高了PHP系統(tǒng)的執(zhí)行效率,,而且如果是數(shù)據(jù)庫(kù)等一些費(fèi)時(shí)的操作,現(xiàn)在可以很及時(shí)地關(guān)閉數(shù)據(jù)庫(kù),,釋放資源,,這樣也在一定程度上提高了PHP和相關(guān)系統(tǒng)的資源使用效率。: |
|
來(lái)自: sumi2005 > 《編程學(xué)習(xí)》