關於PHP的模板的確是一個說起來容易做起來麻煩的事情。隨便一數大概有20種以上的選擇,光pear裡面就包含了5中不同的模板,實在讓人頭疼。
千萬不要人雲亦雲的說這個好那個不好,選擇模板之前最好先應該搞清楚模板的真正目的是什麼? 簡單地說,模板的核心目的就是一個 team work。主要的作用方式有兩種:
1、分離HTML和PHP使網頁設計師和PHP程序員合作更加愉快。
2、分離顯示邏輯和事物邏輯,使得核心事務邏輯的變更和應用程序的擴展更加容易和靈活,也就是說使得程序員之間合作更加愉快。(這一點經常被人們忽視或者誤解,總以為把PHP從HTML中弄出去就叫分離顯示邏輯和事物邏輯了,如果這樣當初又何苦讓PHP和html 混在一起呢?)
搞清楚這個模板的真正目的是什麼,就容易做出正確的選擇了。
如果只有你一個php程序員但是需要和其他的網頁設計人員一起協同工作,那麼選擇能夠分離HTML和PHP的模板就可以了,phplib (現在好像集成到 Pear 裡面了 http://pear.php.net/package/HTML_Template_PHPLIB)或者
FastTemplate 都是這樣的東西,很簡單容易上手。
如果你的網站界面比較丑陋並且主要由程序員來完成,但是功能比較復雜更需要強大的擴展功能,需要分離各個層次包括顯示邏輯,那麼不要用什麼特別的東西,PHP本身就是最好的模板了。要注意的是在這種情況下,你要非常認真的設計你的程序,始終記住要分離的不是PHP和 html 而是事務邏輯(business logic )和顯示邏輯(presentation logic)。這也是為什麼我一直對於Smarty 這種東西非常的抵觸, 因為這個 Smarty 的語法太復雜了太強大了, 幾乎重新發明了一種腳本語言東西, (即使是PHP的程序員也要重新學習它)。更讓人費解的是 這種腳本 越是強大,越容易讓人將事務邏輯(business logic )和顯示邏輯(presentation logic)混在一起, 破壞了模板的初衷。
如果你既想HTML和PHP分離,得到更好的視覺設計,又想整個系統有非常強大的擴展能力能夠適應html,xml,wml各種界面,而且不用去學習復雜的語法的同時提供較高的運行效率,那麼這就是一個相當有挑戰性的問題了。壞消息是目前還沒有一個成熟的模板真正能夠達到這樣的要求,好消息是完成這樣的一個模板並不是很難,如果你嘗試過Zope或者是ColdFusion就會發現這種模板的影子,