PHP八大模板引擎

当我们在PHP中讨论模板引擎时,许多开发人员会告诉你,这是没有必要的,他们会说这是学习时间和资源的浪费,因为PHP本质上也是一个模板引擎。但是当你看过很多框架之后,你会发现很多框架都会有模板引擎的存在,所以说php中的模板引擎还是有必要了解一下的。

Mustache

受 ctemplate 和 et等的启发,Mustache 是一种与框架无关的方式来呈现无逻辑视图。正如 ctemplates 所说,"它强调将逻辑与表示分离:不可能将应用程序逻辑嵌入到这种模板语言中。视图不是由 ERB 或 HAML 组成的视图,而是包含随机帮助器和任意逻辑,而是分为两个部分:PHP类 和 HTML 模板。所有逻辑、决策和代码都包含在视图中。所有标记都包含在模板中。模板除了在视图中的引用方法外,什么都不做。这种严格的分离使编写干净的模板更容易,更容易测试视图,并且更有趣地处理应用的前端。

image

以下代码段提供了 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),因此受到对速度要求极致的开发人员喜爱。

image

此模板引擎具有:

  • 原生的 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)将继续处理已编译的脚本。

image

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 的发展。

image
  • 快速: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)的攻击。

image
  • latte是快速的:它将模板编译为优化的PHP代码。

  • latte是安全的:它是第一个引入内容转义帮助的PHP引擎。

  • latte是易用的:它有直观的语法帮助你轻松建立更好的网站。

latte语法是:

<ul n:if="$items">
{foreach $items as $item}   
<li id="item-{$iterator->counter}">{$item|capitalize}</li>
{/foreach}
</ul>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容