php模板引擎

php模板引擎

PHP是一種HTML內嵌式的在伺服器端執行的腳本語言,所以大部分PHP開發出來的Web套用,初始的開發模板就是混合層的數據編程。雖然通過MVC設計模式可以把程式套用邏輯與網頁呈現邏輯強制性分離,但也只是將應用程式的輸入、處理和輸出分開,網頁呈現邏輯(視圖)還會有HTML代碼和PHP程式強耦合在一起。

基本介紹

  • 中文名:php模板引擎
  • 外文名:PHP template engine
  • 解釋:一種HTML腳本語言
  • 所屬學科:網路工程
由來,類型,

由來

如果你正在設計一個互動式的網站,你一定會關注兩個主要的問題,就是界面美工和應用程式。在大多數的項目組中,開發一個Web程式都會出現這樣的流程:計畫文檔提交之後,界面設計者(美工)製作了網站的外觀模型,然後把它交給後台程式設計師。程式設計師使用PHP實現程式邏輯,同時使用外觀模型做成基本架構,然後工程被返回到HTML頁面設計者繼續完善。就這樣工程可能在後台程式設計師和頁面設計者之間來來回回好幾次。由於後台程式設計師不喜歡干預任何有關HTML標籤,同時也不需要美工們和PHP代碼鬼混在一起。美工設計者只需要配置檔案,動態區塊和其他的界面部分,不必要去接觸那些錯綜複雜的PHP代碼。因此,這時候有一個很好的模板支持就顯得很重要了。
PHP是一種HTML內嵌式的在伺服器端執行的腳本語言,所以大部分PHP開發出來的Web套用,初始的開發模板就是混合層的數據編程。雖然通過MVC設計模式可以把程式套用邏輯與網頁呈現邏輯強制性分離,但也只是將應用程式的輸入、處理和輸出分開,網頁呈現邏輯(視圖)還會有HTML代碼和PHP程式強耦合在一起。PHP腳本的編寫者必須既是網頁設計者,又是PHP開發者。但實際情況是,多數Web開發人員要么是精通網頁設計,能夠設計出漂亮的網頁外觀,但是編寫的PHP代碼很糟糕;要么僅熟悉PHP編程,能夠寫出健壯的PHP代碼,但是設計的網頁外觀很難看。具備兩種才能的開發人員很少見。
現在已經有很多解決方案,可以將網站的頁面設計和PHP應用程式幾乎完全分離。這些解決方案稱為"模板引擎",它們正在逐步消除由於缺乏層次分離而帶來的難題。模板引擎的目的,就是要達到上述提到的邏輯分離的功能。它能讓程式開發者專注於資料的控制或是功能的達成;而網頁設計師則可專注於網頁排版,讓網頁看起來更具有專業感。因此,模化引擎很適合公司的Web開發團隊使用,使每個人都能發揮其專長。
模板引擎技術的核心比較簡單。只要將美工頁面(不包含任何的PHP代碼)指定為模板檔案,並將這個模板檔案中有活動的內容,如資料庫輸出、用戶互動等部分,定義成使用特殊"定界符"包含的"變數",然後放在模板檔案中相應的位置。當用戶瀏覽時,由PHP腳本程式打開該模板檔案,並將模板檔案中定義的變數進行替換。這樣,模板中的特殊變數被替換為不同的動態內容時,就會輸出需要的頁面。
在Web開發中分離應用程式的業務邏輯和表現邏輯,是我們使用模板引擎的主要目的。這是因為有以下兩個重要原因:
美工設計人員可以與應用程式開發人員獨立工作,因為套用的表現和邏輯並非密不可分地糾纏在一起。此外,因為大多數模板引擎使用的表現邏輯一般比應用程式所使用程式語言的語法更簡單,所以,美工設計人員不需要為完成其工作而在程式語言上花費太多精力。
可以使用同樣的代碼基於不同目標生成數據,例如生成列印的數據、生成Web頁面或生成電子數據表等。如果不使用模板引擎,則需要針對每種輸出目標複製並修改代碼,這會帶來非常嚴重的代碼冗餘,極大地降低了可管理性。

類型

目前,可以在PHP中套用的並且比較成熟的模板有很多,例如SmartyPHPLIB、IPB、xingTemplate等幾十種。使用這些通過PHP編寫的模板引擎,可以讓你的代碼脈絡更加清晰,結構更加合理化。也可以讓網站的維護和更新變得更容易,創造一個更加良好的開發環境,讓開發和設計工作更容易結合在一起。但是,對於一個PHP程式設計師來說,沒有哪一個PHP模板對他是最合適、最完美的。因為PHP模板就是大眾化的東西,並不是針對某個人開發的。如果能在對模板的特點、套用有清楚的認識基礎上,充分認識到模板的優勢劣勢,就可以知道是否選擇使用模板或選擇使用哪個模板。
smarty
smarty是一個基於PHP開發的PHP模板引擎。它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用PHP程式設計師同美工分離,使用的程式設計師改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目中顯的尤為重要。
Template Lite
Template Lite是一個非常快而且很小HTML模板引擎。該引擎支持Smarty模板引擎所具有的大部分功能和過濾器。
TinyButStrong
TinyButStrong(TBS)是一個可以讓PHP腳本和HTML檔案乾淨分離的PHP模板引擎。TBS設計成可以使用任何可視化HTML編輯器來編寫TBS的HTML模板頁。
XTemplate
XTemplate是一個適用於PHP的模板引擎。它允許把HTML代碼與PHP代碼分開存儲。XTemplate包含了許多有用的功能比如嵌套的程式塊,各種類型的插值變數。其代碼非常簡潔並且是最最佳化的。
Savant
Savant是一個強大但輕量級的面向對象PHP模板引擎。不象其模板系統,Savant默認沒有把模板編譯成PHP,而是使用PHP本身來作為它的模板語言所以你不需要學習一套新的標記系統。Savant有一個面向對象的模板外掛程式系統和輸出過濾器,可以讓你快速為它新增新的行為。
phemplate
phemplate是一個簡單而且快速的PHP模板引擎。它允許在模板中加入變數和一些動態程式塊包括循環。該模板引擎能夠可以實現表現與邏輯相分離,也就是說你可以從PHP腳本中抽出所有HTML內容。設計人員可以隨意更改HTML而不用擔心弄亂你的PHP腳本。
Dwoo
Dwoo是一個PHP5模板引擎。兼容Smarty模板,它在Smarty語法的基礎上完全進行重寫。支持通過外掛程式擴展其功能。
Sugar
Sugar是一個類似於Smarty的模板引擎,擁有一個簡潔和易於理解的語法。
Twig
Twig是一個靈活,快速,安全的PHP模板語言。它將模板編譯成經過最佳化的原始PHP代碼。Twig擁有一個砂箱模型來評估不可信的模板代碼。Twig由一個靈活的詞法分析器語法分析器組成,可以讓開發人員定義自己的標籤,過濾器並創建自己的DSL。
FXL Template
FXL Template是一個易於使用的模板引擎,提供了一個模板系統所擁有的所有基本功能。支持簡單的text/array分配,block和嵌套的blocks。擁有良好的規則表達式和簡單的模板語法,以實現儘可能快的模板處理。
H2o
H2o是一個PHP模板引擎,它擁有django風格的漂亮模板標籤。它大部分概念都源於Django模板。特性:擁有可讀和自然的語法。復用模板Inclusion和繼承。國際化支持。各種快取支持。
ns-template
2010年大約5月份時,感受到DEDE標籤主動調用數據理念適合CMS,所以開發了一些Smarty自定義修改器和自定義標籤,但是在執行過程中性能低下,開銷以s計,這是無法容忍的。分析跟蹤,受自定義標籤實現的原理限制不可能快。於是在dz模板的基礎上加入了不少smarty語法以及自定義標籤功能。經歷了一年多線上運行和bug修復,並且彌補了DEDE標籤多級嵌套問題後,在較穩定的情況下釋出該版本。
Blade
Blade是Laravel框架下的一種簡單又強大的模板引擎。Blade 非常快,因為僅使用了少量的正則表達式來為你的模板編譯成原始PHP代碼。不同於控制器布局,Blade模板引擎由模板繼承和模板片段驅動。所有的Blade模板檔案必須使用Blade.blade.php檔案擴展名。

相關詞條

熱門詞條

聯絡我們