使用PHP4中的 IntegratedTemplate類實現BLOCK功能 (轉)
使用4中的 IntegratedTemplate類實現BLOCK功能
關鍵字:PHP4,template,模板,IntegratedTemplateExtension,block
讀者要求:瞭解PHP4 的模板概念
使用PHP 模板類進行很有好處,但是有時也會碰到一個問題,比如說輸出一個表格,但是表格行數要到執行的時候才知道,如留言板、BBS、購物網站之類,經常會碰到這個問題。這時做美工的人無法決定在HTML中用幾行表格,如果在PHP程式碼檔案中寫迴圈輸出,又會讓美工、PHP員看程式碼都不方便,美工的人會說,這裡的表格哪裡去了?我要修改表格的顏色背景之類怎麼辦?PHP程式設計師也會說,怎麼這裡突然有一個
使用PHP模板類程式設計一般把這種不確定個數的HTML 元素當成一個“ block ”,對 bolck 的程式設計類似於在程式碼中寫一個迴圈。在比較常用的PHP模板類(如 FastTemplate 和 PHPLib )都有這種功能。寫巢狀的block 類似於寫多重迴圈。現在舉例說明在 PHP4 裡面的 IntegratedTemplateExtension 類中block 的程式設計方法,例子中用的是兩重迴圈,外層block 是GoodsList,裡層block 是GoodsListOmeType 。
基本設定:假設我們寫的程式碼放在C:TestPHPPHP4GoodsList.htm 和 C:TestPHPHTMLGoodsList.php 中。將C:TestPHPPHP4 在 Server 上設成虛擬目錄 /testphp 並且給與指令碼,確認C:TestPHPHTMLGoodsList.htm 無法透過遠端訪問。假定PHP4在C:php4,在 php.ini 裡面設定 include_path = ".;C:php4pear"
以下是GoodsList.htm的內容:
{UserName},您的購物袋裡有以下商品: | ||||
| ||||
商品種類 | 商品名稱 | 商品價格 | ||
{Type} | ||||
{GoodsName} | {Price} | |||
以下是PHP4程式碼檔案 GoodsList.php
//以下是給變數賦值,在實際程式碼中可能從Database中取得資料然後賦值
$UserName = "皮皮魯";
$GoodsTypeArray = array("家電", "書籍");
$GoodsNameArray = array(array("三星顯示器", "Sony單放機","長虹彩電"),
array("C++ 程式設計思想", " 2 高階開發指南", " 5 高階開發指南",
"Flash 4 快閃勁爆網頁", "設計可複用面向的基礎" ));
$GoodsPriceArray = array(array(1024, 302, 1024),
array(35, 62, 76, 66.5, 55 ));
//一般來說這種全域性變數放在單獨的一個檔案中,便於維護
$HTML_CODE_FILE_ = "../HTML/";
$tpl = new IntegratedTemplateExtension($HTML_CODE_FILE_ROOT);
//指定要替換 tag 的 HTML 檔案
$tpl->loadTemplatefile("GoodsList.htm");
$tpl->setVariable("UserName",$UserName); //名稱
//指定外層 block 名稱
$tpl->setCurrentBlock("GoodsList");
//我喜歡在迴圈前將迴圈次數單獨賦值
$GoodsTypeCount = count($GoodsTypeArray);
//對外層block 進行迴圈
for ($i = 0 ; $i < $GoodsTypeCount ; $i++)
{
$tpl->setVariable("Type",$GoodsTypeArray[$i]); //貨物種類
//指定裡層block 名稱
$tpl->setCurrentBlock("GoodsListOfSomeType");
$GoodsNameArrayCount = count( $GoodsNameArray[$i] );
//對裡層block 進行迴圈
for($j = 0; $j < $GoodsNameArrayCount; $j++ )
{
//替換HTML 檔案中的 tag
$tpl->setVariable(array ("GoodsName" =>$GoodsNameArray[$i][$j],
"Price" => $GoodsPriceArray[$i][$j]));
$tpl->parseCurrentBlock(); //這裡也可以寫 $tpl->parse("GoodsListOfSomeType");
}
$tpl->parse("GoodsList"); //結束外層 block
}
//輸出替換後的 HTML
$tpl->show();
?>
執行以後可以看到多重迴圈替換的效果。這樣寫好後, GoodsList.htm 仍然可以使用網頁編輯器如 Dreamweaver、FrontPage 進行編輯, GoodsList.php中是純粹的PHP程式碼,不含HTML,方便以後的程式碼修改和維護。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-979538/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLite中中實現 if not exist 類似功能SQLite
- 使用 Block 實現 KVOBloC
- 探索iOS中Block的實現原理iOSBloC
- 實現類似IE的列印網頁功能 (轉)網頁
- 實現ABP中Person類的許可權功能
- VM中實現手機震動功能的類
- iOS中Block實現原理的全面分析iOSBloC
- javascript如何實現類的功能JavaScript
- 在Asp.Net中實現類似DWR的功能ASP.NET
- Python在類中實現swith case功能Python
- iOS block巢狀block中weakify的使用iOSBloC巢狀
- 在java中實現對FORM的列印功能 (轉)JavaORM
- 用CSS實現類似導航翻轉功能例子CSS
- block沒那麼難(一):block的實現BloC
- WPF上位機 - 使用轉換器實現TIA Wincc中的文字列表功能
- PostgreSQL類似OracleMERGE功能的實現SQLOracle
- 類轉json的基類實現JSON
- block實現原理BloC
- PHP4使用者手冊:常量 (轉)PHP
- iOS - 對 block 實現的探究iOSBloC
- 理解 Block 實現原理BloC
- 實現一個具有百度文庫文件轉換功能的工具類
- VB實現抽象類 (轉)抽象
- 談Objective-C Block的實現ObjectBloC
- scala中的匿名子類實現
- WPF上位機 - 使用轉換器實現TIA Wincc中的可見性和外觀功能
- Linux下VLAN功能的實現 (轉)Linux
- 使用Webcam實現拍照功能Web
- PHP4使用者手冊:函式->usleep (轉)PHP函式
- PHP4使用者手冊:函式->flock (轉)PHP函式
- PHP4使用者手冊:函式->fputs (轉)PHP函式
- PHP4使用者手冊:函式->fseek (轉)PHP函式
- PHP4使用者手冊:函式->fwrite (轉)PHP函式
- PHP4使用者手冊:函式->trim (轉)PHP函式
- PHP4使用者手冊:函式->file (轉)PHP函式
- PHP4使用者手冊:流程控制->for (轉)PHP
- PHP4使用者手冊:函式->count (轉)PHP函式
- PHP4使用者手冊:函式->CURL (轉)PHP函式