php-web應用程式開發:使用模板
每個進行過較大型的php-web應用程式設計的開發人員大概都有如下的經歷:花大量的時間寫超文字語句,為頁面排版,兼作美工等;或在整合的程式**在和html靜態頁面時花費大量的時間。的確,用指令碼語言開發web應用不容易將資料的處理和資料的顯示分開,但在多人合作的情況下,如果無法將資料和顯示分開,將大大影響開發的效率,專業分工的發揮。為了解決這個問題,php也提供了自己的解決方案,有多種,本文主要介紹phplib中的template類。
1 模板處理類的設計
模板處理類主要需完成以下的任務:
·從模板檔案中讀取顯示用的html**。
·將模板檔案和實際生成的資料結合,生成輸出的結果。
·允許同時處理多個模板。
·允許模板的巢狀。
·允許對模板中的某個單獨的部分進行處理。
歸納上述任務,模板類的設計目標為:從多個模板檔案中讀入顯示的html**,將這些顯示**中需要動態資料的地方替換為php程式運算所得出的資料,然後按照一定的順序輸出。其中,替換的部分可以自由的設定。
讀取顯示用的html**採用讀檔案的方式
模板檔案和資料的結合採用正則替換
處理多個模板用陣列儲存來實現。
模板的巢狀的實現主要的想法是:將模板和輸出(任何中間的分析結果)一視同仁,都可拿來做替換,即可實現。
單獨部分的處理的通過在模板檔案中設定標註,然後在正則替換中結合標註來控制,實現部分替換。
2 模板處理類的實現3.1 最基本的例子
為了簡單起見,這裡假設模板檔案、使用模板的php檔案和模板處理類的檔案都放在同乙個目錄下。phplib中的習慣是使用ihtml字尾為模板檔案的字尾。
下面是要使用的模板檔案:
當前的時間是!
注:模板檔案和通常的html檔案差不多,唯一不同的是使用「{}」括起來的是可以被模板處理類替換的動態內容的變數。
接下來使用模板處理類來處理上面的模板:
<?
//引入template類
include("template.inc");
//得到需要替換的資料
$timenow=date("y-m-d h:i:s",time());
//例項化乙個template類
$template= new template();
//載入test.ihtml模板
$template->set_file("handle1","test.ihtml");
//使用$timenow的值替換模板中的currenttime
$template->set_var("currenttime",$timenow);
//進行實際的模板操作
$template->parse("output","handle1");
//輸出最後結果
$template->p("output");
?>
content
模板檔案2,box.ihtml
模板處理檔案,test.php
<?php
//引入template類
include("template.inc");
#例項化乙個template類,名字叫$t
$t = new template();
# 建立包含模板檔案的陣列
$t->set_file(array(
"page" => "page.ihtml",
"box" => "box.ihtml"));
# 載入模板檔案box中的乙個塊row,引用名稱為rows
$t->set_block("box", "row", "rows");
# 設定替換
$t->set_var(array("title" => "testpage",
"pagetitle" => "hugo"));
# 生成資料num,bignum
for ($i=1; $i<=3; $i++)
# 生成box,再生成page
$t->parse("out", array("box", "page"));
# 輸出最後結果
$t->p("out");
?>
注:這裡page.ihtml模板檔案中變數的命名與最後的輸出控制代碼都用了「out」。
迴圈取值部分採用資料庫類,即可將資料的生成與資料庫應用結合起來。
執行結果如下圖:
模板巢狀與塊設定執行結果圖
4 小結
本文主要簡要介紹了phplib中template類的設計、實現及使用方法。當然,還有許多其他的php模板方案,如由perl中演化而來的fasttemplates。目前internet小組採用的是另一種方案,主要的實現方式是模板檔案入庫,採用eval來實現資料與模板檔案的結合等,相對來說模板檔案的管理與模板處理的使用比較簡潔,但缺少檔案存放的模式。本人目前在做的一些嘗試是將兩者結合起來,並想在phplib的template類的基礎上進行改進。初步的目標任務有兩個:1、在讀取模板檔案時擴充套件其對資料庫的支援,這樣可以在必要時增強靈活性與使用資料庫管理工具 2、化簡模板檔案與資料的結合,因為在實際使用中大多數情況下無需將模板檔案中的變數在處理程式中再設定(資料變數對映)一遍。
在此也希望讀者、php程式愛好者一起參與進來,多提寶貴意見,祝好運!
使用Moblin SDK開發應用程式
從這篇開始,我會逐步介紹moblin2 sdk中引入的api與中介軟體,希望能對大家有所幫助。在詳細介紹之前,先講講geoclue的來龍去脈。大家知道,原先在應用程式中要獲取裝置的當前位置,最常見的做法是通過gps定位,程式設計師往往需要直接訪問串列埠讀取gps裝置發來的nmea幀,然後通過分析獲得...
對採用 模開開發 應用程式的想法
下面談一談我對 模式的認識,有可能一般講的 有不同,這只是我個人對 的認識,如果大家有不同的看法或補充,請反饋 m model 是指資料模型,一般資料庫的操作都放在這一層 v view 是指使用者介面,包括功能介面和表現介面 也就是說通個view我們可以了解應用程式可以執行哪些操作,和最終業面的效果...
應用程式開發步驟
c 是一種編譯語言,c 源程式需要經過編譯 連線,生成可執行檔案後方可執行。使用c 開發乙個應用程式大致要經過以下步驟 1 首先要根據實際問題確定程式設計的思路,包括選用適當的數學模型。這方面的內容其實也是各應用學科的主要研究領域之一。2 根據前述思路或數學模型編寫程式。除了非常簡單的問題可以直接寫...