让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出错界面
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
php木马webshell扫描器代码
Jan 25 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
php文件下载处理方法分析
Apr 22 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 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/10/09 PHP
php学习之 数组声明
2011/06/09 PHP
iframe 异步加载技术及性能分析
2011/07/19 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
python计算auc指标实例
2017/07/13 Python
python实现图书管理系统
2018/03/12 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
设计总监岗位职责
2013/12/07 职场文书
运动会通讯稿200字
2014/02/16 职场文书
会计求职信
2014/05/29 职场文书
放飞理想演讲稿
2014/09/09 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
小学运动会开幕词
2015/01/28 职场文书
信息技术课教学反思
2016/02/23 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Java SSM配置文件案例详解
2021/08/30 Java/Android