Twig模板引擎用法入门教程


Posted in PHP onJanuary 20, 2016

本文实例讲述了Twig模板引擎用法。分享给大家供大家参考,具体如下:

介绍

Twig是一个灵活、高效并且安全的PHP模板引擎。

如果你使用过Smarty、Django或者Jinja这类基于文本的模板引擎的话,那么你会觉得Twig是很自然而然的事情。Twig严格遵守了PHP的信念,同时增加了在模板环境中很有用的函数,这些做法使得Twig不论是对设计师还是开发人员,都是非常友好的。

Twig的主要特征有:

高效:Twig将模板编译成了优化了的PHP文件,与原生的PHP代码比较而言,性能损耗非常小。

安全:Twig使用沙箱(sandbox)模式去运行模板中不被信任的代码。这使得我们可以选择Twig作为那些允许用户修改模板的应用的模板引擎。

灵活:Twig具有灵活的语法分析器和语法解析器,它允许开发人员定义自己的标签(tags)和过滤器(filters),并且创建自己的领域特定语言(DSL,domain specific language)。

必要条件

Twig需要的最低PHP版本为5.2.4。

安装

安装Twig有多种方法。如果你不能确定使用哪一种,那么直接下载压缩包即可。

压缩包安装

从下载页面下载最新的压缩包

解压

将解压出来的文件放置到项目可以访问到的地方。

安装开发版本

安装Subversion或者Git

SVN地址:http://svn.twig-project.org/trunk/, git地址git://github.com/fabpot/Twig.git

使用PEAR包安装

安装PEAR

pearchannel-discoverpear.twig-project.org
pearinstalltwig/Twig (或者pearinstalltwig/Twig-beta)

基础API用法

本节将给出一个Twig的PHP API的简单介绍

使用Twig的第一步是注册它的autoloader:

require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();

记得用Twig所在路径代替/path/to/lib

注:Twig在类的命名上遵守PEAR的约定,这意味着你可以在自己编写的autoloader中整合对Twig的类的加载

$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
$template = $twig->loadTemplate('Hello {{ name }}!');
$template->display(array('name' => 'Fabien'));

Twig使用加载器(Twig_Loader_String)来定位模板,同时使用环境(Twig_Environment)来储存配置信息。

loadTemplate()方法使用加载器设定的信息来定位和加载模板,同时返回一个模板对象(Twig_Template),该对象可以使用display()方法来进行渲染。

Twig也可以使用文件系统加载器(filesystem loader):

$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
));
$template = $twig->loadTemplate('index.html');

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php生成shtml类用法实例
Dec 09 PHP
php实现的验证码文件类实例
Jun 18 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 #PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 #PHP
CodeIgniter钩子用法实例详解
Jan 20 #PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 #PHP
CodeIgniter多语言实现方法详解
Jan 20 #PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 #PHP
教你php如何实现验证码
Jan 20 #PHP
You might like
完美解决PHP中文乱码
2009/11/26 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
php实现简单文件下载的方法
2015/01/30 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python操作excel文件并输出txt文件的实例
2018/07/10 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python语言中有算法吗
2020/06/16 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
新大陆软件面试题
2016/11/24 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
浅谈Python数学建模之数据导入
2021/06/23 Python
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers