Twig高性能、安全、易扩展的php模板引擎

Twig高性能、安全、易扩展的php模板引擎

4730发表于2015-12-08

我们都知道原始的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语法:

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


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代码。


小编蓝狐