網站製作學習誌

記錄學習製作網站的一切

PHP 開發迷思 (一) - 樣版該用 PHP 還是 Smarty ?

這陣子在 PTT 的 PHP 版,看到有人說為什麼要用 Smarty ? PHP 其實本身就很好用的樣版語言了,何必再多此一舉?

身為「 PHP Smarty 樣版引擎」一書的作者,我對這樣的評斷其實並沒有特別的感覺;因為我認為去爭論這種主觀的東西並沒有太大的意義,因為重點根本不在 Smarty 到底是不是多此一舉。

對我而言,用 PHP 也好,用 Smarty 也罷,主要在於我能不能嚴守業務處理邏輯資料呈現邏輯的分離;而 Smarty只是其中一種工具,它能半強迫地讓我遠離 PHP 的誘惑,讓我專心去處理我的資料。只是語法的不一致和第一次執行的效率,常常是 Smarty 被批評的主因,但只用 PHP 真的好嗎?

假設今天回歸到只純粹用 PHP ,就能解決語法不同以外的問題了嗎?我倒是不這麼認為。僅僅單純地 echo 變數值,卻沒避掉嚴謹模式的 notice ;就算用物件的魔術方法 (__set) ,寫出來的樣版碼跟 Smarty 編譯出來的也沒差多少;而且為了節省重複性的程式碼,還是會使用物件的方法或函式。所以這樣真的 OK 嗎?

因為最後不論你選用哪一種方案,都還是得自己花心思去處理樣版。

我在我的噗浪上問過幾位也是 Web 開發上有多年實務的朋友,他們能不能放心地把已經套過程式的樣版再還給視覺美編再處理?答案幾乎都是否定的。為什麼?我想理由大家心裡都明白。

美編根本不管你用啥鬼子寫,除非他非常非常有 sense ,不然每改版一次你還是得準備重套樣版。也許有人會說,只用 PHP 當樣版語言,如果遇到用 Dreamweaver 的美編,那他看到了 PHP 圖示就會知道這是不可以改的…是呀,是不能改…但如果他改動 HTML 的部份,讓 if / else (當然還有其他結構敘述) 合不起來的話…光是 Debug 就夠我們受的了。

而 Smarty 也會有這個問題,所以問題的本質不在你用什麼工具,而是你套樣版的速度跟不跟得上樣版被美編破壞的速度而已。

當然如果跟懂得使用 CSS 排版的美編合作,那這樣的問題就至少能解決一半了。因為在小幅的改版中,用 CSS 通常就能解決了。如果是大幅地改版,那重套的工還是免不了的。

所以這裡只是想告訴大家,選擇自己好使的工具就可以了,不必要去爭論孰優孰劣。因為沒有最完美的方法,只有適合自己的方法。

Comments