程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 模板,PHPLIB處理方式一

模板,PHPLIB處理方式一

編輯:關於PHP編程

如果你正想知道什麼是模板,首先去看一下Sascha Schumann寫的精彩文章《模板-為什麼和如何在PHP3 中使用它們(Templates - why and how to use them in PHP3)》的前幾段。
   一般來說,模板可以讓你完全地把你的PHP代碼從HTML中分離出來,這樣使得HTML的圖形設計者們非常高興,而且可以避免他們搞丟你的寶貴設計。
它不是FastTemplates
  那麼,我們真的需要在PHPBuilder上關於模板的另一篇文章嗎?好,是的,因為有不止一種的方法用PHP來實現模板。Sascha的文章講述了如何使用FastTEmplates,但是PHP基本類庫("PHPLIB")有它自已的模板實現。
  它們有什麼不同呢?FastTemplates最初是從一個Perl庫轉變來的。FastTemplates對Perl程序工作的很好,但是對PHP不太理想。Kristian Koehntopp從頭編寫了PHPLIB模板,作為一個純的PHP庫,它更好地提供了PHP的優勢。好處之一是Kristian的設計使用了preg_replace()來分析模板,據說比FastTemplate 中使用的ereg_replace()要快。PHPLIB模板的另一個好處是它允許動態的塊實現嵌套,不象FastTemplates。
  兩個庫都有著非常相似的特性和能力,但是如果你已經使用了FastTemplates,並且你想學習使用PHPLIB模板,你應該把你所知道的關於FastTemplates 的一切都忘掉。他們的特性可能是相似的,但是PHPLIB模板所做的每件事比FastTemplates只有一點點不同。
使用PHPLIB模板
  讓我們從一個簡單的例子開始。我們假設在/home/mydir/mytemplates/下面有一個名為MyTemplate的模板,它有一些文本,內容可能是:
祝賀!你贏了一輛{some_color}Honda Prelude!
  注意"{some_color}"是用大括號包圍的。大括號指明some_color是一個模板變量。我們可能想寫這樣一個腳本,它可以裝入模板,在{some_color}模板變量的地方插入PHP變量$my_color的值,然後輸出新的文本。
如果$my_color碰巧被設為"藍色",最後的輸出可能是:
祝賀!你贏了一輛新藍色Honda Prelude!
  下面是上述結果的PHP腳本:
--------------------------------------------------------------------------------
include "template.inc";
$my_color = "blue";
// 將在後面使用
$t = new Template("/home/mydir/mytemplates/");
// 創建一個名為 $t 的模板對象
$t->set_file("MyFileHandle","MyTemplate.ihtml");
// 設置 MyFileHandle = 我們的模板文件
$t->set_var("some_color",$my_color);
// 設置模板變量 some_color = $my_color值
$t->parse("MyOutput","MyFileHandle");
// 設置模板變量 MyOutput = 分析後的文件
$t->p("MyOutput");
// 輸出 MyOutput 的值(我們的分析後的數據)
?>--------------------------------------------------------------------------------
  第一行是一個include 指令,用來提供PHPLIB模板功能。當然PHPLIB做的比模板要多,但是如果你只想使用模板特性,只需要包括tmplate.inc (template.inc是來自於PHPLIB的文件之一)。PHPLIB模板使用面向對象程序設計,所以下一件事情就是創建一個模板對象。代碼 創建一個新的模板對象$t。這個$t對象是一個句柄,將用來處理所有的模板函數,用於PHP腳本中其它的代碼。如果你願意,你可能創建其它的模板對象(每一個都有著自已的模板變量名字空間),但是一個就夠用了。在模板的構造函數調用中的路徑("/home/mydir/mytemplates/")用來設置你的模板所在位置的根目錄,但是如果你沒有設它,它將缺省與你的PHP腳本所在目錄一樣。
  然後我們調用set_file()來定義一個名為"MyFileHandle"的句柄來與MyTemplate.ihtml鏈接(在parse()被調用之前,模板不會真正地裝入)。順便說一下,PHPLIB模板的模板文件名的後綴為.ihtml 是一種習慣,你可以使用.html,.tpl,或其它的後綴。然後調用set_var()來設置模板變量some_color為$my_color的值(值為"藍色"),意味著所有在模板中出現{some_color}的地方都將被詞"藍色"所替換,一旦我們調用了parse()。
  接著我們調用parse(),它會裝入MyFileHandle(MyTemplate.ihtml)進行分析,並且替換所有模板變量("{某變量}")為模板變量的值,分析的結果放在MyOutput中。任何結果都不會輸出到web服務器上,除非p("MyOutput")被調用,它將輸出最後分析過的文本。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved