目前市面上有很多針對PHP的MVC模闆,但Smarty無疑是在功能和速度上處于絕對領先地位的。MVC(Model-View-Controller)模型-視圖-控制器,相信大家對這個概念不陌生,老李也就不詳細解釋了。EcShop肯定是要采用MVC架構的,不說大家也明白,網店市場的需求是千變萬化的,客戶對頁面的外觀組織形式和頁面邏輯的要求可謂是“一千個人心中有一千個哈姆雷特”。為了應對這種變化,EcShop必須采用MVC架構。這裡順便提一下,老李不是所謂的模式派或架構派,不會滿嘴冒“觀察者模式”、“職責鍊模式”、“依賴倒置”、“接口隔離”、“MVC”、“MVP”等。老李始終覺得根據項目的需要和變化點來設計軟體。如果有需要,即便設計出緊耦合的軟體也是很Prefect。
好了,繼續說Smarty。先說說Smarty的特點:
速度:相對于其它PHP模闆而言,采用Smarty模闆編寫的程式可以獲得最快的速度。注意,是相對于其它PHP模闆而言。
内建緩存支援(大量緩存處理可能不是很完美)。
可以自定義插件。
可以自行設定模闆定界符,如{}、{{}}等。
模闆中可以使用控制語句(後面會詳細說)。
僅對修改過的模闆檔案進行重新編譯。
先說Smarty變量,變量來自三個部分:
來自PHP頁面中的變量,即assign()方法傳過來的。在EcShop中經常可以看見這種使用。
保留變量,相當于PHP中的預定義變量(見EcShop之路PHP篇)。在Smarty模闆中使用保留變量時,無需使用assign方法傳值,直接調用變量名即可。get、post、server、session等同于$_GET、$_POST、$_SERVER、$_SESSION。
修飾變量,有的時候不僅僅需要取得變量的值,還需要對變量進行處理,如轉化成大寫。
Smarty也有很多内置函數,下面列舉幾個EcShop中常用的函數:
include和insert:用來載入其它模闆。但insert載入的内容不會被緩存,每次開啟頁面都會重新執行。
Config_load:用來加載配置檔案。
foreach:略,注意用法。
section:用于比較複雜數組的循環通路。
fetch:傳回模闆的輸出内容,但不直接顯示出來。
Smarty就先說到這吧,相信大家多看看代碼也就明白了!