在 MVC 架構普及前夜,PHP 開發者面臨「業務邏輯與表現層分離」的迫切需求。本文回顧 2005 年 IBM developerWorks 經典評測,從 API 設計、功能完整度、執行效能三個維度,對當時最主流的兩大模板引擎 —— PHPLIB Template 與 FastTemplate 進行實測對比,結論至今仍具參考價值。
{VAR} 格式,模板檔可通用set_var(key, val)/assign(key, val) 及陣列批量傳入parse() 解析至 handle,再以 p()/FastPrint() 輸出parse(h, v, true),FastTemplate 用 parse(h, .v) 前綴點號... 定義,FastTemplate 以 {BLOCK} 標記,功能對等| 維度 | PHPLIB Template | FastTemplate |
|---|---|---|
| API 命名風格 | 符合 PHP 慣例,與 PHPLIB 其他類庫一致 | 方法名如 FastPrint() 顯得突兀,參數設計不夠「地道」 |
| 區塊支援時機 | 早期即內建 | 舊版缺失,須將區塊內容獨立存檔再 include,極不便維護 |
| PHP 4 相容性 | 實測穩定 | 官方文檔承認存疑似 Bug |
| 文檔完整度 | 詳盡 | 較簡略 |
若專案已引入 PHPLIB 其他元件,選用 PHPLIB Template 幾乎零學習成本。
/test result.php # 控制腳本,HTTP 迴圈請求兩測試頁 simple__test_phplib.php simple__test_fast.php complex__test_phplib.php complex__test_fast.php /include phplibTemplate.inc.php FastTemplate.inc.php TplTest.inc.php # 計時、日誌、分析工具類 data.inc.php # 區塊測試用二維陣列 /ihtml simple_phplib.ihtml simple_fast.ihtml complex_phplib.ihtml complex_fast.ihtml /logs *.log # 各測試回合產生日誌
兩引擎使用結構幾乎相同的模板檔,確保公平性。控制腳本以 HTTP 請求方式多次呼叫測試頁,記錄壁鐘時間並寫入日誌,最後由 result.php 統計平均耗時。
原文僅給出測試架構,具體數據見「下一頁」。歷史經驗顯示:Simple 模式兩者差距極小(同屬字串替換);Complex 模式下 PHPLIB 的 parse(h, v, true) 實作較 FastTemplate 的字串前綴法略快,且記憶體佔用更穩定。
ereg → preg_match 等棄用函數這份 2005 年的實測記錄,不僅見證了 PHP 模板發展史,更提醒我們:技術選型應以團隊熟悉度與長期維護為核心,而非單純追逐 Benchmark 分數。