让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+MYSQL开发工具及资源收藏
Jan 02 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
基于Zookeeper的使用详解
May 02 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
php技巧小结【推荐】
Jan 19 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 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初学者头疼问题总结
2006/07/08 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python微信公众号开发简单流程
2018/03/23 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
python实现词法分析器
2019/01/31 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
综合实践活动方案
2014/02/14 职场文书
上课看小说检讨书
2014/02/22 职场文书
租房协议书
2014/04/10 职场文书
大学活动总结范文
2014/04/29 职场文书
优质服务活动实施方案
2014/05/02 职场文书
文员求职信
2014/07/15 职场文书
晚会闭幕词
2015/01/28 职场文书
自主招生自荐信格式
2015/03/04 职场文书