在PHP中如何使用模板

是否你面臨著創建由一個編程人員(可能就是你)和一個設計人員同時進行創作的網站?你不知道如何使工作對你倆來說變得容易嗎?我來給你答案:使用FastTemplate來使你的站點更容易定制!

好了,你可能想知道爲什麽你要使用FastTemplates。

·可以在幾秒鍾改變你的整個站點的外觀

·抽象程序設計,沒有垃圾HTML代碼

·設計人員不需要關心全部的"模糊"代碼

·令人驚訝地快

·更容易重用舊的模版(對普通的表單而說)

FastTemplate源于一個有同樣名稱的Perl軟件包(可以在CPAN上找到)。你可以下載PHP 的版本從它的主頁(本站下載地址爲:http://www.phpe.net/downloads/1.shtml)。你只需要其中的一個類的文件(class.FastTemplate.php)。

讓我首先解釋一下在使用模板生成一個頁面與簡單地通過echo或print 將頁面輸出之間有什麽不同吧。

簡單地使用echo/print的方法很適合編寫短的腳本,但是不能幫助你更好的組織和定制。模板在另一方面給

了你創建多國語言站點的能力,只是通過改動一個參數。他們可以促使你更關心你要做的。

在開始編碼之前不要害怕思考。它可能會花費一些時間,但是這些花費會隨著項目的發展對你有所回報。

那麽,如何應用FastTemplate呢?首先你需要先進行一個簡單地調用:

<?php $tpl=new FastTemplate ("path");

?>

傳遞給它一個路徑,是所有你的模板文件存放的目錄。它返回一個對象,你可以用它進行參

數賦值,生成頁面等等。

FastTemplate是基于這樣一種假設:一個很大的頁面是由很多小的部分組成的。每一個部分有一個唯一

的名字。最小的部分是賦值給這樣有著唯一名字的一段正常的文本字符串。這個可以通過 <?php

$tpl->assign(NAME, "text");

?>

來完成。現在,如果你的一個模板包含{NAME},FastTemplate 就知道你

的意圖了。

另外,FastTemplate需要知道你想如何調用你的模板。你需要通過傳遞一個相關數組(associative

array)給 <?php $tpl->define(); ?>

來給它一個提示。

<?php

$tpl->define(array(foo => "foo.tpl",

bar => "bar.tpl"));

?>

這些賦值將分別給foo和bar以不同的文件(名爲foo.tpl和bar.tpl)。

現在你想讓FastTemplate替換在模板foo中的所有{MACROS}爲相應的值。通過發出命令

<?php

$tpl->parse(PAGECONTENT, "foo");

?>

來實現。 這個命令將把模板"foo"的內容賦給PAGECONTENT。 當然,我們還沒有做完,因爲模板bar中爲主要的頁面定義,FastTemplate需要替換其中的

{PAGECONTENT}宏。我們也需要給PAGETITLE賦值,如下所做: <?php

$tpl->assign(PAGETITLE, "FooBar test");

$tpl->parse(MAIN, "bar");

?>

容易吧,不是嗎?我們現在只需要把它輸出: <?php

$tpl->FastPrint(MAIN);

?>

下面三個文件顯示了實際練習中的更多的細節描述。我不知道在現實生活了離了這個技術應如何生活 --

你的設計者會高興,你的老板會微笑,因爲你可以在更短的時間內做更多的事情。

bar.tpl <!-- bar.tpl -->

<HTML>

<HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD>

<BODY BGCOLOR=BLACK TEXT=WHITE>

<H1>{PAGETITLE}</H1>

{PAGECONTENT}

</BODY>

</HTML>

foo.tpl <!-- foo.tpl -->

很明顯示什麽都沒做。請看{NAME}.

demo.php3 <?php

include "class.FastTemplate.php3";

$tpl = new FastTemplate( ".");

$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));

$tpl->assign(NAME, "me");

$tpl->assign(PAGETITLE, "Welcome!");

$tpl->parse(PAGECONTENT, "foo");

$tpl->parse(MAIN, "bar");

$tpl->FastPrint(MAIN);

?>

創建整個表格

我也寫了一個短的例子,用來演示如何通過單行模板來生成整個表格。它很有效,因爲你仍然不需要直

接修改HTML文檔。

我們增加一個模板的內容到一個已經定義過的唯一命名的後面來創建HTML表格。這個可以通過在調用

$tpl->parse()時,在模板名前加上一個"."來實現。 <?php

// 將模板foo的內容賦給TPL1

$tpl->parse(TPL1, "foo");

// 在TPL1後附上模板bar的內容

$tpl->parse(TPL1, ".bar");

?>

page.tpl

<HTML>

<HEAD><TITLE>Feature world - {PAGE_TITLE}</TITLE></HEAD>

<BODY BGCOLOR=BLACK TEXT=WHITE>

<H1>{PAGE_TITLE}</H1>

{PAGE_CONTENT}

</BODY>

</HTML>

table.tpl

<TABLE>

<TR> <TH>name</TH> <TH>size</TH> </TR>

{TABLE_ROWS}

</TABLE>

table_row.tpl

<TR>

<TD>{FILENAME}</TD>

<TD>{FILESIZE}</TD>

</TR>

yad.php3

<?php

include "class.FastTemplate.php3";

function InitializeTemplates() {

global $tpl;

$tpl = new FastTemplate( ".");

$tpl->define( array( page => "page.tpl",

table => "table.tpl",

table_row => "table_row.tpl" ) );

}

function ReadCurrentDirectory() {

global $tpl;

$handle = opendir( ".");

while($filename = readdir($handle)) {

$tpl->assign(FILENAME, $filename);

$tpl->assign(FILESIZE, filesize($filename));

$tpl->parse(TABLE_ROWS, ".table_row");

}

closedir($handle);

$tpl->parse(PAGE_CONTENT, "table");

}

function PrintPage($title) {

global $tpl;

$tpl->assign(PAGE_TITLE, $title);

$tpl->parse(FINAL, "page");

$tpl->FastPrint(FINAL);

}

InitializeTemplates();

ReadCurrentDirectory();

Printpage( "Yet Another Demo");

?>

速度討論

"Ok," 你可能會說,"一切都太好了。但是它不會影響我的網站的速度嗎?"

不,你的網站可能變得更快。一個簡單的原因就是:因爲你作爲一個編程人員關心的是設計你的應用和編寫代碼,你的代碼將會更有效率,處理相同的任務更容易和更快速。所以,你可能會在上面列出的爲什麽考慮使用FastTemplate在你的項目中的原因列表中增加另一條理由。

如果你只是想轉換一個已經存在的web站點,性能上的成功可能不會被注意到。我建議在PHP中使用正則表達式緩沖,它將對這種情況有所幫助。因爲FastTemplate對每一個宏都使用正則表達式,每一個正則表達式將被只編譯一次並且速度上的影響可以忽略不計。

如何使用PHP操作文件
現在很多的朋友擁有自己免費的空間(畢竟中國窮人還是多的),而吝啬的ISP不給提供MYSQL,于是聰明的朋友們就選擇了----(FILE文件表數據庫格式),其實是我自己個人這樣定義的~ Access爲文件表數據庫,如果您...查看完整版>>如何使用PHP操作文件
 
在PHP中如何使用模板
是否你面臨著創建由一個編程人員(可能就是你)和一個設計人員同時進行創作的網站?你不知道如何使工作對你倆來說變得容易嗎?我來給你答案:使用FastTemplate來使你的站點更容易定制!  好了,你可能想知道爲什麽...查看完整版>>在PHP中如何使用模板
 
教你如何用PHP制作靜態網站的模板框架
  第一個目的是談論得最多的目的,它設想的情形是:一組程序員編寫用于生成頁面內容的PHP腳本,同時另一組設計人員設計HTML和圖形以控制頁面的最終外觀。分離功能和布局的基本思想就是使得這兩組人能夠各自編寫和使...查看完整版>>教你如何用PHP制作靜態網站的模板框架
 
如何用PHP制作靜態網站的模板框架
  第一個目的是談論得最多的目的,它設想的情形是:一組程序員編寫用于生成頁面內容的PHP腳本,同時另一組設計人員設計HTML和圖形以控制頁面的最終外觀。分離功能和布局的基本思想就是使得這兩組人能夠各自編寫和使...查看完整版>>如何用PHP制作靜態網站的模板框架
 
如何簡化php模板頁面中分頁代碼的解析
------------------------------------------------這篇文章主要是針對“使用模板的情況”寫的,但是這種方法適合于任何的場合,在任何情況下都是一種比較好的解決...查看完整版>>如何簡化php模板頁面中分頁代碼的解析
 
如何使用PHP程序開發高效的WEB網絡系統
PHP是一個很優秀的工具,它可以簡單,也可以複雜。不一樣的項目,應該用不一樣的PHP。小項目 - 簡單而直接的PHP一般對于一個功能頁面在20以下的網站,我們可以用一個很簡單的框架結構來寫。在這個規模上,我建議是使...查看完整版>>如何使用PHP程序開發高效的WEB網絡系統
 
如何使用PHP中的正則表達式
     在PHP中正則表達式用于複雜字符串的處理。所支持的正則表達式如下:  ereg()  ereg_replace()  eregi()  eregi_replace()  split()  (1)ereg,eregi  這是正規表達式匹配函數,前者是大小寫有關...查看完整版>>如何使用PHP中的正則表達式
 
如何確定系統能發現php.ini並使用它
  問:  我在php.ini中的設置好像不起作用,如何確定系統找到了php.ini文件並使用它?  答:  建立一個php文件,在當中調用phpinfo()函數,通過web訪問這個文件,列表中的“Configuration File (php.ini) Pa...查看完整版>>如何確定系統能發現php.ini並使用它
 
如何使用PHP中的正則表達式
在PHP中正則表達式用于複雜字符串的處理。所支持的正則表達式如下: ereg() ereg_replace() eregi() eregi_replace() split() (1)ereg,eregi 這是正規表達式匹配函數,前者是大小寫有關匹配,後者則是無關的. 用法: ...查看完整版>>如何使用PHP中的正則表達式
 
 
回到王朝網路移動版首頁