我们都知道原始的php里面嵌入html代码,这样看起来php自己就是一个模版引擎了。今天我来介绍一下高性能、安全、易扩展的php模板引擎Twig。
Twig官方网站:http://twig.sensiolabs.org/
Twig是一个先进的php模板引擎,有以下特点:
1、高性能:Twig把模板编译成经优化过的php代码。
2、安全:Twig支持沙盒模式,可以安全的执行非信任的代码。
3、易扩展:Twig允许我们自己定义一些标签和filter,这样丰富模板语法。
使用php模板引擎Twig的理由
谈到到php的模板引擎,有的人会说php自己就像一个模版引擎了,但是它没有具有高级模板引擎的特性。
1、简洁
php语法在输出的时候显得冗长如下:
原生php语法:
Twig语法:
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
2、完全模板化的语法
对于常用的表达式和集合迭代循环输出Twig有一些短标签。
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
3、强大的特性
利用Twig你可以很轻松的写出强大功能丰富的模板,因为Twig支持:多模板继承,模板块(blocks),自动输出转义等等。
{% extends "layout.html" %}
{% block content %}
Content of the page...
{% endblock %}
4、语法简单,易于学习
Twig的语法简单,已经经过优化让web设计能够最大限度的提高工作效率。
5、扩展性
Twig是开源的架构,扩展性强,如果它内置语法不能满足你,你完全可以自己定义一些标签、filter、函数function、甚至操作符等。
6、单元测试
Twig完全可以单元测试,而且内库稳定,已经广泛用于大型的项目中。
7、文档
Twig用于强大、完整的开发文档和API在线联机丛书。
8、安全性
输出自动转义防止脚本攻击,可以在全局开启或本地开启自动转义选项。
{% autoescape true %}
{{ var }}
{{ var|raw }} {# var won't be escaped #}
{{ var|escape }} {# var won't be doubled-escaped #}
{% endautoescape %}
Twig支持沙盒模式:Twig可以执行模板代码在一个沙盒环境中,在这个沙盒环境下只能访问有限的标签、资源、方法。沙盒也能全局开启或本地开启:
{{ include('page.html', sandboxed = true) }}
9、清晰的、精准的报错信息
当Twig模板有语法错误时,它能够输出清晰的、精准的报错信息,这个很利于我们进行调试和快速的找出问题。
10、快速、高性能
Twig目标之一就是能多快就快,为了实现速度能达到最大化,Twig把模版编译成优化过后的php代码。