让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 正则表达式小结
Aug 31 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
安装APACHE
2007/01/15 PHP
PHP实现下载功能的代码
2012/09/29 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
JS查看对象功能代码
2008/04/25 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
checkbox使用示例
2013/08/23 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Numpy之random函数使用学习
2019/01/29 Python
利用Python检测URL状态
2019/07/31 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python3实现弹弹球小游戏
2019/11/25 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
python中判断文件结束符的具体方法
2020/08/04 Python
Python实现自动签到脚本功能
2020/08/20 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2015高考寄语集锦
2015/02/27 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
python本地文件服务器实例教程
2021/05/02 Python