让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数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
php对数组排序代码分享
Feb 24 PHP
Linux下php5.4启动脚本
Aug 03 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
YII框架行为behaviors用法示例
Apr 26 PHP
php给数组赋值的实例方法
Sep 26 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
javascript 写类方式之一
2009/07/05 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python各类经纬度转换的实例代码
2019/08/08 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
10个示例带你掌握python中的元组
2020/11/23 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
怎样有效的进行自我评价
2013/10/06 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
上课说话检讨书
2015/01/27 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript