在为PHP带来模板引擎时,许多人会见告你PHP本身便是一款模板引擎啊。
虽说一开始PHP是作为一门模版措辞利用,但它并不像近年来的任何模板引擎一样发展。
事实上,他不支持当代模板引擎的许多特性:

简洁:PHP措辞在涉及到输出转义时冗长而可笑。

<?php echo $var ?><?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

比较之下,Twig拥有非常简洁的语法,它使得模版更具可读性:

{{ var }}{{ var|escape }}{{ var|e }} {# shortcut to escape a variable #}模版导向语法:Twig为通用的模式供应了快捷办法,例如在遍历一个空数组时,会显示一个默认文本:

{% for user in users %} {{ user.name }}{% else %} No users have been found.{% endfor %}全功能:Twig为你供应了轻松构建强大模版的统统:多重继续,块,自动化输出转义,以及其他许多特性:

{% extends "layout.html" %}{% block content %} 页面内容...{% endblock %}易学:Twig的语法非常易学,纵然是网页设计师也能毫无阻碍地快速完成事情:

当然,PHP也是许多模板引擎项目中用到的措辞。
但它们中的大多数仍是利用PHP 4开拓的,并且不支持最佳的web开拓实践:

phptwigTwig 灵巧快速平安的PHP模板说话 Vue.js

可扩展性:纵然是在最繁芜的情形下,Twig也足够灵巧知足你的需求。
得益于开放的体系,你可以实现你自己的措辞构造(标签、过滤器、函数、乃至运算符等)来创建你自己的DSL。
已被单元测试:Twig经历过完全的单元测试,它是稳定的,能用于大型项目的。
文档:Twig拥有完全的文档,以及专用的在线手册,当然还有完善的API文档。
安全:说到安全,Twig拥有一些独特的特性:自动输出转义:为安全考虑,你可以全局启用自动输出转义,或者只对某个块启用:{% autoescape true %} {{ var }} {{ var|raw }} {# var won't be escaped #} {{ var|escape }} {# var won't be doubled-escaped #} {% endautoescape %}沙盒:Twig可以在沙盒环境下评估任意模版,用户只能访问一组有限的标签,过滤器,以及由开拓者定义的工具方法。
沙盒可以全局地或者单独对某些模版启用:{{ include('page.html', sandboxed = true) }}清晰的缺点信息:无论何时你在模版中碰着了语法缺点,Twig都会输出带有出错的文件名和行号的帮助信息。
它非常有助于调试。
快速:Twig的目标之一便是尽可能地快。
为了尽可能实现最佳的速率,Twig将模版编译成极致优化的PHP代码
它的开销与常规的PHP代码比较,已经降到了极低。