被遺忘的 template

現在差不多大家也在談 呢(拜各種實用軟體如 WP,phpBB,postnuke 所賜)。 的好處(也是害處)就是 HTML 和 Logic 撈在一起。好處是, 不會像 Perl 和 Java Servlet 那樣要每行用程式碼把 HTML 輸出到網頁上(echo, print, println),也不用將那些 double quote/single quote 逐個逐個 escape,那麼輸出 HTML 便方便得多。不過,在編程的角度看,方便隱含難以維護的意思。好像除錯、明白別人的程式碼,如果程式碼沒有經過精心的包裝,讀者可能便會遇上老鼠拉龜的情況。對人來說,同時理解兩種電腦語言也許太難了。

有方法可以一舉兩得嗎?答案是用上 template(樣版)。Template 的作用是,將負責處理資料和負責將資料轉成用家可看 HTML 的程式碼分開。比如說,一個普通從資料庫取資料的 PHP script 可以分為三個步驟:1. 從資料庫取資料 2. 處理資料 3. 將資料處理成 HTML 給用家看。而 Template 的架構便是由 PHP 負責第一及第二步,而 template engine 便負責最後一部份。

這做法的好處是有不少。首先,網頁設計人員不用再看 PHP 也可以懂設計動態網頁,而 template 的語言也相對較 PHP 簡單。設計者可較易看到網頁的模樣。另一方面,由於設計和真正的應用程式被分開,設計者也不能改動 PHP 程式碼,保安相對上較高。而且,template 的原碼看起來較簡潔,降低了編寫動態網頁的門檻。

Smarty 是一套著名的 PHP 樣版引擎,功能強大而語法易學。比如說,<?php echo $count; ?> 在 template 裏可轉寫成 {$count}。而入面也附有功能強大的 function 和 filter,例如 {$name|capitalize} 可將 $name 變數中的每個英文字頭字母大階,而 {$smarty.now|date_format:”%Y-%m-%d”} 則以 Y-m-d 的格式輸出日期。如果有 PHP 的基礎,大家還可以為 Smarty 撰寫不同的外掛。

網址:http://smarty.php.net

Leave a Reply

Your email address will not be published. Required fields are marked *