让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&amp;MYSQL服务器配置说明
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
mysql5写入和读出乱码解决
Nov 25 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
php查询whois信息的方法
Jun 08 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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连接Oracle数据库
2006/10/09 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php单例模式实现方法分析
2015/03/14 PHP
JS高级笔记
2011/07/13 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python config文件的读写操作示例
2019/09/27 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
胡雪岩故居导游词
2015/02/06 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
大学体育课感想
2015/08/10 职场文书
大学副班长竞选稿
2015/11/21 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技