當我們在PHP中討論模板引擎時,許多開發人員會告訴你,這是沒有必要的,他們會說這是學習時間和資源的浪費,因為PHP本質上也是一個模板引擎。但是當你看過很多框架之后,你會發現很多框架都會有模板引擎的存在,所以說php中的模板引擎還是有必要了解一下的。
Mustache
受 ctemplate 和 et等的啟發,Mustache 是一種與框架無關的方式來呈現無邏輯視圖。正如 ctemplates 所說,"它強調將邏輯與表示分離:不可能將應用程序邏輯嵌入到這種模板語言中。視圖不是由 ERB 或 HAML 組成的視圖,而是包含隨機幫助器和任意邏輯,而是分為兩個部分:PHP 類和 HTML 模板。所有邏輯、決策和代碼都包含在視圖中。所有標記都包含在模板中。模板除了在視圖中的引用方法外,什么都不做。這種嚴格的分離使編寫干凈的模板更容易,更容易測試視圖,并且更有趣地處理應用的前端。

以下代碼段提供了 Mustaches 語法外觀的預覽:
Hello {{name}}You have just won {{value}} dollars!{{#in_ca}}Well, {{taxed_value}} dollars, after taxes.{{/in_ca}}
Plates
plates是一個原生PHP模板系統,快速,易于使用,易于擴展是它的特性。它受到出色的 Twig 模板引擎的啟發,并努力將現代模板語言功能引入 PHP 模板中。plates原生的PHP 模板而不是編譯的模板語言(如 Twig 或 Smarty),因此受到對速度要求極致的開發人員喜愛。

此模板引擎具有:
原生的 PHP 模板,無需學習新語法plates是模板系統,而不是模板語言plates鼓勵使用現有的PHP函數通過模板布局和繼承增加代碼重用用于將模板分組到命名空間的模板文件夾跨模板的數據共享將數據預先分配給特定模板內置逃生幫助器易于使用的功能和擴展與框架無關,將與任何項目配合使用分離設計使模板易于測試可以使用composer引入以下代碼段提供了板模板引擎語法外觀的預覽:
<?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內置的模板引擎。與其他流行的PHP模板引擎不同,Blade 不會限制您在視圖中使用純 PHP 代碼。事實上,所有 Blade 視圖都編譯成普通的 PHP 代碼并緩存,直到修改它們,這意味著 Blade 基本上為應用程序增加了零開銷。視圖文件使用 .blade.php 文件擴展名。
然而離開laravel,我們很少看到blade的身影,這也許也是它沒有更流行的一個原因吧。
Volt
Volt 是一種超快且設計友好的模板語言,采用 C 來編寫的。Volt 與 Phalcon 的其他組件高度集成,就像您可以在應用程序中將其用作獨立組件一樣。volt的靈感來自Jinja,最初由阿明·羅納徹創作。。Volt 的語法和功能已經通過更多的元素進行了增強,當然,開發人員在使用 Phalcon 時已經習慣了它的極致性能。
以下代碼段提供了 Volt 代碼外觀的快速預覽:
{# 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 的現代、靈活和面向的對象模板引擎,有助于將表示 (HTML/CSS) 與應用程序邏輯分離。在許多方面,dwoo 與 Smarty 的模板和插件兼容,因為 dwoo 的作者基于 Smarty 引入到 Web 開發領域的一般想法。
Dwoo 的模板引擎是一個寫得很好、面向對象的模板引擎,與 Smarty 相比,它允許更輕松、更快的開發,并且它仍然足夠兼容,允許使用 Smarty 的開發人員平穩過渡到 dwoo。
以下代碼段提供了 Dwoo 語法外觀的預覽:
<!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 的模板引擎,它設計之初就是為了將表示 (HTML/CSS) 與應用程序邏輯分離。這意味著PHP代碼是應用程序邏輯,并且與表示分離。Smarty 將模板的副本編譯為 PHP 腳本。通過這種方式,您可以獲得模板標記語法和 PHP 速度的優點。首次調用每個模板,然后從該點開始使用編譯版本,編譯一次。Smarty 會為您處理這一問題,因此模板設計器只需編輯 Smarty 模板,就更改了編譯的版本,此方法使模板易于維護,并且由于編譯的版本是PHP,操作代碼加速器(如 APC 或 ZendCache)將繼續處理已編譯的腳本。

Smarty 是一個模板引擎,用作應用程序的 View 組件。Smarty 可輕松與上面列出的任何引擎耦合為視圖組件。Smarty 不保證良好的應用程序設計或適當的演示分離,這仍然需要由有能力的開發人員和網頁設計人員來解決。
以下代碼段提供了語法外觀的預覽:
{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 模板語言的語法,這些語言啟發了 Twig 的發展。

快速: Twig編譯模板到純優化的 PHP 代碼。與常規PHP代碼相比,開銷減少到最低限度。安全:Twig具有用于評估不受信任的模板代碼的沙盒模式。這允許 Twig 用作用戶可以修改模板設計的應用程序的模板語言。靈活:Twig由靈活的詞匯和解析器提供動力。這允許開發人員定義自己的自定義標記和篩選器,并創建自己的 DSL。Twig 支持輕松構建強大模板所需的一切:多個繼承、塊、自動輸出轉義等等。語法易于學習,并已經過優化,使 Web 設計人員無需妨礙其操作即可快速完成工作。
以下代碼段提供了此模板引擎語法的預覽:
<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)的攻擊。

latte是快速的:它編譯模板到平原優化的PHP代碼。latte是安全的:它是第一個引入內容感知的逃避的PHP引擎。latte是易用的:它有直觀的語法,并可以幫助你輕松建立更好的網站。latte語法是:
<ul n:if="$items">{foreach $items as $item} <li id="item-{$iterator->counter}">{$item|capitalize}</li>{/foreach}</ul>