PHP 不需要另一個樣版引擎, part 2 - 補充與回應
繼《PHP 不需要另一個樣版引擎》,我再補充一些內容。
PHP 本身就是一個 SGML,XML,HTML 等 markup language document 用的解析器 (parser) ,所以就像一份 XML 文件必須標示 <?xml ?> 一樣, PHP 要求自己包含在 <?php ?> 標籤中。上文說了,這是 SGML 規範內容。儘管我們可以把 PHP 當一個純粹的程式語言,但還是要把 code 放在標籤中。這個怪僻在 Perl, Python, Ruby 中可看不到。
早期瀏覽器尚未內建 XML 引擎時, XML parser 也跟 PHP 一樣是在伺服端工作。現在 XML 內建到瀏覽器了,但 PHP 還沒有。說不定哪天我們就會看到內建 PHP 引擎的瀏覽器了。也許 .Net 版的 PHP (Phalanger) 會搭上微軟 WPF 架構 的順風車,成為第一個被瀏覽器 (Vista/IE only) 內建的 PHP 引擎,用於解析 HTML, XAML 等文件中的 php 標籤。
我認為樣板系統對於如何構成畫面提供了一個一致性的流程與結構,透過學習並使用樣板系統,可以讓程式設計師的工作輕鬆不少,也保證了一定程度的程式品質。 by tokimeki at 2007年01月30日
如果 PHP 身為一個樣版引擎卻不能為 如何構成畫面提供了一個一致性的流程與結構
,那麼有什麼理由認為再弄另一個樣版引擎,使用另一個樣版語法就可以呢?
還有一個誤解。認為用 PHP 作樣版語法的話,就不能把 View 丟給網頁設計師去做,所以不能減輕程式設計師的工作。我想這是受到不嚴謹的程序員撰寫的雜亂 PHP 程式之誤導而產生的偏差經驗。從語法上來看, Smarty 就比較易讀嗎?前文所舉之例子,可以看出 Smarty 並不見得易讀。而上一個工作經驗告訴我,對一個網頁設計師而言,不管是 PHP 語法還是 Smarty 語法,他們都不會去改。對他們而言,那只是一個單純的、規定的字串,在他們眼中跟一張 Logo 圖檔沒兩樣。他們只會去剪貼、複製那些標籤,再將標籤放在版面的適當位置。
好吧,如果 PHP 不像個樣版引擎,那我們用 XSLT ,道地純正的樣版引擎,而且跟任何程式語言無相依性。然而,我同樣沒碰過哪個網頁設計師真誠地歌頌擁戴 XSLT 。
以下為 2007-01-30 22:10 時增加的補充內容。
其實我想說得是,如果有一位美工人員,願意配合你作畫面的修改,也去學習 PHP 幫你拼版,你覺得這是件好事嗎? by tokimeki
Tokimeki 誤解了。我雖然說用 PHP 做樣版語法即可,但這句話的對象不是網頁設計師,而是程式設計師。會認真看我這文章的人,應該都是程式設計師吧。
對網頁設計師來說,任何樣版語法都是程式設計師弄出來的怪玩意,他們不想理解那是什麼 (本系列文章中第三次說)。他們希望最好在他們的編輯器上,那些 tag 都被當成一個普通的圖示,可以用滑鼠拖放到他們想放的版面位置。像 PHP 在 DreamWeaver 中會顯示成 <php> 的圖示。所以他們可以用滑鼠施放那些圖示到他們想放的位置上,甚至這個簡單的施放動作可以丟給程式設計師去做。
認為網頁設計師可受益於樣版引擎的想法,其實是程式設計師的迷思。我實際的工作經驗告訴我,事實不是如此。因此為何要網頁設計師學習樣版語法呢?別要求網頁設計師去學「任何」樣版語法。樣版這玩意,其實是一種程序性工作,程式設計師才適任。其實 XHTML, CSS 和 XSLT 這三種規範已經很好的告訴我們:把 Layout 和 Style 交給網頁設計師,把 Template 交給程式設計師。
樂多舊回應