使用PHP 模板類進行編程很有好處,但是有時也會碰到一個問題,比如說輸出一個表格,但是表格行數要到運行的時候才知道,如留言板、BBS、購物網站之類,經常會碰到這個問題。這時做美工的人無法決定在HTML文件中用幾行表格,如果在PHP代碼文件中寫循環輸出,又會讓美工、PHP程序員看代碼都不方便,美工的人會說,這裡的表格哪裡去了?我要修改表格的顏色背景之類怎麼辦?PHP程序員也會說,怎麼這裡突然有一個<tr>、<td>,做什麼用?會嵌在HTML文件哪裡?。
使用PHP模板類編程一般把這種不確定個數的HTML 元素當成一個“ block ”,對 bolck 的編程類似於在代碼中寫一個循環。在比較常用的PHP模板類(如 FastTemplate 和 PHPLib )都有這種功能。寫嵌套的block 類似於寫多重循環。現在舉例說明在 PHP4 裡面的 IntegratedTemplateExtension 類中block 的編程方法,例子中用的是兩重循環,外層block 是GoodsList,裡層block 是GoodsListOfSomeType 。
基本設置:假設我們寫的代碼放在C:TestPHPPHP4GoodsList.htm 和 C:TestPHPHTMLGoodsList.php 中。將C:TestPHPPHP4 在Web Server 上設成虛擬目錄 /testphp 並且給與腳本執行權限,確認C:TestPHPHTMLGoodsList.htm 無法通過遠端浏覽器訪問。假定PHP4安裝在C:php4,在 php.ini 裡面設置 include_path = ".;C:php4pear"
以下是GoodsList.htm的內容:
<html>
<head>
<title>購物袋裡的商品清單</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body,p,br,td,tr,table { font-size: 9pt}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="700" border="0" cellspacing="0" cellpadding="0" height="90">
<tr>
<td colspan="5"> </td>
</tr>
<tr>
<td colspan="5">
<div align="center">{UserName},您的購物袋裡有以下商品:</div>
</td>