一、模板引擎
模板引擎(Web开发的模板引擎)是为了用户界面与业务数据(内容)分离而产生的,它可以生成特定格式文档,用于网站的模板引擎就会生成一个标准的 html 文档,其本质就是根据一定的规则进行变量替换。模板引擎可以解耦前后端,提高开发效率。
Twig是一款灵活、快速、安全的PHP模板引擎,类似于其他的模板引擎, 如 Smarty 、Django、Jinja等。每种模板引擎的实现本质是相同的——就是变量替换。
二、Twig安装及使用
目前而言,安装应该都是 composer 工具安装。
composer require "twig/twig:~2.0" require_once '/path/to/vendor/autoload.php'; $loader = new \Twig\Loader\ArrayLoader([ 'index' => 'Hello {{ name }}!', ]); $twig = new \Twig\Environment($loader); echo $twig->render('index', ['name' => 'Fabien']);
三、基本语法
# 输出变量 {{ foo }} # 判断 {% if foo %} {{ foo }} {% endif %} # for (foo array) {% for x in foo %} {{ x }} {% endfor %} # 格式化(foo array) {{ foo | json_encode }} # 运算 {{ foo ? true : false }} {{ foo + 2 }} # html 扩展 {% extends "base.html" %} {% block title %}Index{% endblock %} {% block head %} {{ parent() }} <style type="text/css"> .important { color: #336699; } </style> {% endblock %} {% block content %} <h1>Index</h1> <p class="important"> Welcome to my awesome homepage. </p> {% endblock %}
更多用法请参考官方文档。
四、使用场景
1 目前流行的MVC模式框架的 渲染 模板
2 发送邮件的内容渲染模板
针对第二种使用场景,这里给出业务实际应用场景,现在有线上预警实时,在发送异常时要发送报告邮件,且邮件格式要使用表格,并具备一定的美观性,这时就可以在发送邮件时,使用twig处理一下,然后再把处理后的内容发送邮件即可,伪代码如下:
# 1 首先引入twig自动加载类,如果是composer安装则不需要
require_once(BASE_DIR . '/deploy/framework/Twig/Autoloader.php');
# 2 获取twig类,使用其render方法
<?php class Util { /** * @return \Twig_Environment */ public static function Twig() { $autoloader = new \Twig_Autoloader(); $autoloader->register(true); $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(array( '__main__' => app()->basePath() . '/views' ))); return $twig; } }
# 3 代码中使用
$twig = Util::Twig(); $context = $twig->render('warning.html', array('foo' => $foo)); # 4 warning.html代码 <!DOCTYPE html> <html lang="zh-cn" style="margin: 0;padding:0;width:100%;"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>实时监控预警邮件</title> </head> <body> {{ foo }} </body> </html>
欢迎一起交流学习!
1 twig官方文档,
2 smarty 模板引擎
3