让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 相关文章推荐
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
PHP生成压缩文件实例
Feb 07 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 PHP
如何用PHP实现分布算法之一致性哈希算法
May 26 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 文件缓存的性能测试
2010/04/25 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python中的时区问题
2021/01/14 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
本科毕业生求职信
2014/06/15 职场文书
安全隐患整改报告
2014/11/06 职场文书
关于感谢信的范文
2015/01/23 职场文书
歌咏比赛主持词
2015/06/29 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
志愿者工作心得体会
2016/01/15 职场文书
table不让td文字溢出操作方法
2022/12/24 HTML / CSS