让ThinkPHP的模板引擎达到最佳效率的方法详解


Posted in PHP onMarch 14, 2017

本文分析了让ThinkPHP的模板引擎达到最佳效率的方法。分享给大家供大家参考,具体如下:

默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文件中采用php原生态代码和模板标签的混合使用。

ThinkPHP官方开发文档说,这种默认的内置模板引擎的性能是高效的,但还不是最佳的。要使模板引擎的性能达到最佳效率,就要使用PHP本身作为模板引擎

使用PHP本身作为模板引擎其实很简单,只需在项目的配置文件Conf/config.php上配置:

'TMPL_ENGINE_TYPE' =>'PHP'

采用PHP本身作为模板引擎后,意味着你将不能再使在模板文件上使用系统默认使用的模板引擎的模板标签,你只能使用原生态的php代码。

下面将通过实例来演示一下,采用PHP本身作为模板引擎后,如何在模板上操作php代码。

下载wblog3.1.2_3博客程序并安装并安装(你也可以自建项目)

首先配置项目W3note\Conf\config.php文件添加一项配置项:

<?php
return array(
 ...
 'TMPL_ENGINE_TYPE' =>'PHP',
 ...
);
?>

然后把控制器\W3note\Lib\Action\IndexAction.class.php和对应模板\W3note\Tpl\Index\index.html的代码清空以待不同的调试之用。

好了,基础工作已经做好了,接下来是调试记录:

1、在模板上使用php原生态代码

IndexAction.class.php控制器代码

<?php
class IndexAction extends Action {
 public function index(){
  $this->display();
 }
}

index.html模板代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>使用原生态的php代码</title>
</head>
<body>
 <?php
 $title= '网志博客';
 echo $title;//输出变量
 ?>
</body>
</html>

输出:

$title='网志博客'; echo $title;

在模板上把"<?php ?>"换成<php></php>后,结果无法解释变量,说明不支持<php></php>标签。

2、在模板上直接使用查询语句

控制器代码同1,模板代码如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>使用原生态的php代码</title>
</head>
<body>
 <?php
 $vo=M('News')->find();
 echo $vo['title'];
 ?>
</body>
</html>

输出:

欢迎使用WBlog博客程序

控制器在一边呆着似乎什么也没做,模板上竟然可以这样写,实在太灵活了!

3、在模板上调用控制器分配的查询结果

IndexAction.class.php控制器代码

<?php class IndexAction extends Action {
 public function index(){
  $vo=M('News')->find();
  $this->assign('vo', $vo);
  $this->display();
 }
}

模板index.html代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>使用原生态的php代码</title>
</head>
<body>
 <?php
 echo $vo['title'];
 ?>
</body>
</html>

输出:

欢迎使用WBlog博客程序

这种情况和系统默认使用的模板引擎时写法没什么两样。

4、在模板上调用项目函数库的函数

控制器代码同1,模板代码如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>使用原生态的php代码</title>
</head>
<body>
 <?php
 echo pwdHash('abc');//调用项目\W3note\Common\common.php函数库的加密函数pwdHash()
 ?>
</body>
</html>

输出:

af10ef457ed637b91955369297b8e640

摈弃了系统默认模板引擎笨拙(相对来讲)的标签语法,函数的调用是如此简单!

总结:在ThinkPHP中使用PHP本身作为模板引擎,可以使模板引擎的性能达到最佳效率,在模板上需要使用原生态的php语法,写法比较活活,但是系统默认模板引擎的模板标签将失去作用。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php学习 字符串课件
Jun 15 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php实现上传图片文件代码
Jul 19 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 #PHP
Yii2下点击验证码的切换实例代码
Mar 14 #PHP
php分页查询的简单实现代码
Mar 14 #PHP
php实现购物车产品删除功能(2)
Jul 23 #PHP
php实现产品加入购物车功能(1)
Jul 23 #PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 #PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 #PHP
You might like
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
详解php中 === 的使用
2016/10/24 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python生成随机密码的方法
2017/06/16 Python
python获取多线程及子线程的返回值
2017/11/15 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
python实现超市商品销售管理系统
2019/11/22 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
Unix如何添加新的用户
2014/08/20 面试题
学术诚信承诺书
2014/05/26 职场文书
2014会计年终工作总结
2014/12/20 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技