让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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
用PHP编写PDF文档生成器
Oct 09 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
抛弃 PHP 代价太高
Apr 26 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 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执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
微信JS接口大全
2016/08/25 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
党支部培养考察意见
2015/06/02 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python