<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      使用PHP4中的 IntegratedTemplate類完成BLOCK技巧

      [摘要]使用PHP 模板類進行編程很有好處,但是有時也會碰到一個問題,比如說輸出一個表格,但是表格行數要到運行的時候才知道,如留言板、BBS、購物網站之類,經常會碰到這個問題。這時做美工的人無法決定在HTML文件中用幾行表格,如果在PHP代碼文件中寫循環輸出,又會讓美工、PHP程序員看代碼都不方便,美工的...
      使用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:\TestPHP\PHP4\GoodsList.htm 和 C:\TestPHP\HTML\GoodsList.php 中。將C:\TestPHP\PHP4 在Web Server 上設成虛擬目錄 /testphp 并且給與腳本執行權限,確認C:\TestPHP\HTML\GoodsList.htm 無法通過遠端瀏覽器訪問。假定PHP4安裝在C:\php4,在 php.ini 里面設置 include_path = ".;C:\php4\pear"

      以下是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">&nbsp;</td>
      </tr>
      <tr>
      <td colspan="5">
      <div align="center">{UserName},您的購物袋里有以下商品:</div>
      </td>
      </tr>
      <tr>
      <td colspan="5">
      <hr>
      </td>
      </tr>
      <tr>
      <td width="52">&nbsp;</td>
      <td width="302">商品種類</td>
      <td width="302">商品名稱</td>
      <td width="299">商品價格</td>
      <td width="47">&nbsp;</td>
      </tr>
      <!-- BEGIN GoodsList --> <!-- 說明: block 商品列表開始 -->
      <tr bgcolor="#99CCFF">
      <td width="52">&nbsp;</td>
      <td width="302"><font color="#CC0066">{Type}</font></td>
      <td width="302">&nbsp;</td>
      <td width="299">&nbsp;</td>
      <td width="47">&nbsp;</td>
      </tr>
      <!-- BEGIN GoodsListOfSomeType --> <!-- 說明: block 某一類商品列表開始 -->
      <tr>
      <td width="52">&nbsp;</td>
      <td width="302">&nbsp;</td>
      <td width="302">{GoodsName}</td>
      <td width="299">{Price}</td>
      <td width="47">&nbsp;</td>
      </tr>
      <!-- END GoodsListOfSomeType --> <!-- 說明: block 某一類商品列表結束 -->
      <!-- END GoodsList --> <!-- 說明: block 商品列表結束 -->
      <tr>
      <td colspan="5">&nbsp;</td>
      </tr>

      <p>&nbsp;</p>
      </body>
      </html>


      以下是PHP4代碼文件 GoodsList.php


      <?php
      require_once "HTML/ITX.php";
      // 以下是給變量賦值,在實際代碼中可能從Database中取得數據然后賦值
      $UserName = "皮皮魯";
      $GoodsTypeArray = array("家電", "書籍");
      $GoodsNameArray = array(array("三星顯示器", "Sony單放機","長虹彩電"),
      array("C++ 編程思想", "Java 2 高級開發指南", "Visual Basic 5 高級開發指南",
      "Flash 4 快閃勁爆網頁", "設計模式可復用面向對象軟件的基礎" ));
      $GoodsPriceArray = array(array(1024, 302, 1024),
      array(35, 62, 76, 66.5, 55 ));

      //一般來說這種全局變量放在單獨的一個文件中,便于維護
      $HTML_CODE_FILE_ROOT = "../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();
      ?>





      日韩精品一区二区三区高清