PHP八大模板引擎

當我們在PHP中討論模板引擎時,許多開發(fā)人員會告訴你,這是沒有必要的矩动,他們會說這是學習時間和資源的浪費,因為PHP本質(zhì)上也是一個模板引擎释漆。但是當你看過很多框架之后悲没,你會發(fā)現(xiàn)很多框架都會有模板引擎的存在,所以說php中的模板引擎還是有必要了解一下的男图。

Mustache

受 ctemplate 和 et等的啟發(fā)示姿,Mustache 是一種與框架無關(guān)的方式來呈現(xiàn)無邏輯視圖。正如 ctemplates 所說逊笆,"它強調(diào)將邏輯與表示分離:不可能將應(yīng)用程序邏輯嵌入到這種模板語言中栈戳。視圖不是由 ERB 或 HAML 組成的視圖,而是包含隨機幫助器和任意邏輯难裆,而是分為兩個部分:PHP類 和 HTML 模板子檀。所有邏輯、決策和代碼都包含在視圖中乃戈。所有標記都包含在模板中褂痰。模板除了在視圖中的引用方法外,什么都不做症虑。這種嚴格的分離使編寫干凈的模板更容易缩歪,更容易測試視圖,并且更有趣地處理應(yīng)用的前端谍憔。

image

以下代碼段提供了 Mustaches 語法外觀的預(yù)覽:

Hello {{name}}
You have just won {{value}} dollars!
{{#in_ca}}
Well, {{taxed_value}} dollars, after taxes.
{{/in_ca}}

Plates

plates是一個原生PHP模板系統(tǒng)驶冒,快速,易于使用韵卤,易于擴展是它的特性骗污。它受到出色的 Twig 模板引擎的啟發(fā),并努力將現(xiàn)代模板語言功能引入 PHP 模板中沈条。plates原生的PHP 模板而不是編譯的模板語言(如 Twig 或 Smarty)需忿,因此受到對速度要求極致的開發(fā)人員喜愛。

image

此模板引擎具有:

  • 原生的 PHP 模板蜡歹,無需學習新語法

  • plates是模板系統(tǒng)屋厘,而不是模板語言

  • plates鼓勵使用現(xiàn)有的PHP函數(shù)

  • 通過模板布局和繼承增加代碼重用

  • 用于將模板分組到命名空間的模板文件夾

  • 跨模板的數(shù)據(jù)共享

  • 將數(shù)據(jù)預(yù)先分配給特定模板

  • 內(nèi)置逃生幫助器

  • 易于使用的功能和擴展

  • 與框架無關(guān),將與任何項目配合使用

  • 分離設(shè)計使模板易于測試

  • 可以使用composer引入

以下代碼段提供了板模板引擎語法外觀的預(yù)覽:

<?php
$this->layout('template', ['title' => 'User Profile']) ?>

<h1>Welcome!</h1>
<p>Hello <?=$this->e($name)?></p>
<h2>Friends</h2><ul>    
<?php foreach($friends as $friend): ?>       
 <li>            
<a href="/profile/<?=$this->e($friend->id)?>">   <?=$this->e($friend->name)?></a>        
</li>    

<?php endforeach ?></ul>

<?php if ($invitations): ?>    

<h2>Invitations</h2>    <p>You have some friend invites!</p>

<?php endif ?>

Blade

blade是laravel內(nèi)置的模板引擎月而。與其他流行的PHP模板引擎不同汗洒,Blade 不會限制您在視圖中使用純 PHP 代碼。事實上父款,所有 Blade 視圖都編譯成普通的 PHP 代碼并緩存溢谤,直到修改它們瞻凤,這意味著 Blade 基本上為應(yīng)用程序增加了零開銷。視圖文件使用 .blade.php 文件擴展名世杀。

然而離開laravel阀参,我們很少看到blade的身影,這也許也是它沒有更流行的一個原因吧瞻坝。

Volt

Volt 是一種超快且設(shè)計友好的模板語言蛛壳,采用 C 來編寫的。Volt 與 Phalcon 的其他組件高度集成所刀,就像您可以在應(yīng)用程序中將其用作獨立組件一樣衙荐。volt的靈感來自Jinja,最初由阿明·羅納徹創(chuàng)作浮创。赫模。Volt 的語法和功能已經(jīng)通過更多的元素進行了增強,當然蒸矛,開發(fā)人員在使用 Phalcon 時已經(jīng)習慣了它的極致性能瀑罗。

以下代碼段提供了 Volt 代碼外觀的快速預(yù)覽:

{# app/views/products/show.volt #}
{% block last_products %}
{% for product in products %}    
* Name: {{ product.name|e }}    
{% if product.status === 'Active' %}       
Price: {{ product.price + product.taxes/100 }}   
 {% endif  %}
{% endfor  %}
{% endblock %}

Dwoo

Dwoo 是 PHP 的現(xiàn)代、靈活和面向的對象模板引擎雏掠,有助于將表示 (HTML/CSS) 與應(yīng)用程序邏輯分離斩祭。在許多方面,dwoo 與 Smarty 的模板和插件兼容乡话,因為 dwoo 的作者基于 Smarty 引入到 Web 開發(fā)領(lǐng)域的一般想法摧玫。

Dwoo 的模板引擎是一個寫得很好、面向?qū)ο蟮哪0逡姘笄啵c Smarty 相比诬像,它允許更輕松、更快的開發(fā)闸婴,并且它仍然足夠兼容坏挠,允許使用 Smarty 的開發(fā)人員平穩(wěn)過渡到 dwoo。

以下代碼段提供了 Dwoo 語法外觀的預(yù)覽:

<!DOCTYPE html>
<html>    
<head>        
<title>My Webpage</title>    
</head>    
<body>        
<ul id="navigation">       
{foreach $navigation item}            
<li><a href="{$item.href}">{$item.caption}</a></li>       
 {/foreach}       
 </ul>        
<h1>My Webpage</h1>        
{$a_variable}    
</body>
</html>

Smarty

Smarty 是誕生非常早的 PHP 的模板引擎邪乍,它設(shè)計之初就是為了將表示 (HTML/CSS) 與應(yīng)用程序邏輯分離降狠。這意味著PHP代碼是應(yīng)用程序邏輯,并且與表示分離庇楞。Smarty 將模板的副本編譯為 PHP 腳本榜配。通過這種方式,您可以獲得模板標記語法和 PHP 速度的優(yōu)點吕晌。首次調(diào)用每個模板蛋褥,然后從該點開始使用編譯版本,編譯一次睛驳。Smarty 會為您處理這一問題烙心,因此模板設(shè)計器只需編輯 Smarty 模板膜廊,就更改了編譯的版本,此方法使模板易于維護弃理,并且由于編譯的版本是PHP,操作代碼加速器(如 APC 或 ZendCache)將繼續(xù)處理已編譯的腳本屎蜓。

image

Smarty 是一個模板引擎痘昌,用作應(yīng)用程序的 View 組件。Smarty 可輕松與上面列出的任何引擎耦合為視圖組件炬转。Smarty 不保證良好的應(yīng)用程序設(shè)計或適當?shù)难菔痉蛛x辆苔,這仍然需要由有能力的開發(fā)人員和網(wǎng)頁設(shè)計人員來解決。

以下代碼段提供了語法外觀的預(yù)覽:

{include file="header.tpl" title="Info"}
User Information:<p>Name: {$name|capitalize}<br>
Address: {$address|escape}<br>
{include file="footer.tpl"}

Twig

Twig 是 PHP 的模板語言扼劈。Twig 使用類似于 Django 和 Jinja 模板語言的語法驻啤,這些語言啟發(fā)了 Twig 的發(fā)展。

image
  • 快速:Twig編譯模板到純優(yōu)化的 PHP 代碼荐吵。與常規(guī)PHP代碼相比骑冗,開銷減少到最低限度。

  • 安全:Twig具有用于評估不受信任的模板代碼的沙盒模式先煎。這允許 Twig 用作用戶可以修改模板設(shè)計的應(yīng)用程序的模板語言贼涩。

  • 靈活:Twig由靈活的詞匯和解析器提供動力。這允許開發(fā)人員定義自己的自定義標記和篩選器薯蝎,并創(chuàng)建自己的 DSL遥倦。

Twig 支持輕松構(gòu)建強大模板所需的一切:多個繼承、塊占锯、自動輸出轉(zhuǎn)義等等袒哥。語法易于學習,并已經(jīng)過優(yōu)化消略,使 Web 設(shè)計人員無需妨礙其操作即可快速完成工作堡称。

以下代碼段提供了此模板引擎語法的預(yù)覽:

<div class="form-control">    
<i class="fa fa-calendar"></i>
 {{ form_label(form.dueDate) }}    
{{ form_widget(form.dueDate) }}    
<small>{{ form_help(form.dueDate) }}</small>   
 <div class="form-error">        {{ form_errors(form.dueDate) }}    </div></div>

LATTE

latte也是PHP的模板引擎之一,它可簡化你的工作并確保輸出免受漏洞(如 XSS)的攻擊艺演。

image
  • latte是快速的:它將模板編譯為優(yōu)化的PHP代碼粮呢。

  • latte是安全的:它是第一個引入內(nèi)容轉(zhuǎn)義幫助的PHP引擎。

  • latte是易用的:它有直觀的語法幫助你輕松建立更好的網(wǎng)站钞艇。

latte語法是:

<ul n:if="$items">
{foreach $items as $item}   
<li id="item-{$iterator->counter}">{$item|capitalize}</li>
{/foreach}
</ul>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啄寡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子哩照,更是在濱河造成了極大的恐慌挺物,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件飘弧,死亡現(xiàn)場離奇詭異识藤,居然都是意外死亡砚著,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門痴昧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稽穆,“玉大人,你說我怎么就攤上這事赶撰∩嘞猓” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵豪娜,是天一觀的道長餐胀。 經(jīng)常有香客問我,道長瘤载,這世上最難降的妖魔是什么否灾? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮鸣奔,結(jié)果婚禮上墨技,老公的妹妹穿的比我還像新娘。我一直安慰自己挎狸,他們只是感情好健提,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伟叛,像睡著了一般私痹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上统刮,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天紊遵,我揣著相機與錄音,去河邊找鬼侥蒙。 笑死暗膜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鞭衩。 我是一名探鬼主播学搜,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼论衍!你這毒婦竟也來了瑞佩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤坯台,失蹤者是張志新(化名)和其女友劉穎炬丸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜒蕾,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡稠炬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年焕阿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片首启。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡暮屡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毅桃,到底是詐尸還是另有隱情褒纲,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布疾嗅,位于F島的核電站外厂,受9級特大地震影響冕象,放射性物質(zhì)發(fā)生泄漏代承。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一渐扮、第九天 我趴在偏房一處隱蔽的房頂上張望论悴。 院中可真熱鬧,春花似錦墓律、人聲如沸膀估。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽察纯。三九已至,卻和暖如春针肥,著一層夾襖步出監(jiān)牢的瞬間饼记,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工慰枕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留具则,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓具帮,卻偏偏與公主長得像博肋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜂厅,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容