让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和ACCESS写聊天室(七)
Oct 09 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
解决laravel查询构造器中的别名问题
Oct 17 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
mysql 全文搜索 技巧
2007/04/27 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
新手简单了解vue
2019/05/29 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
多版本Python共存的配置方法
2017/05/22 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
行政主管职责范本
2014/03/07 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
研究生导师评语
2014/12/31 职场文书
幽默导游词开场白
2015/05/29 职场文书
公司食堂管理制度
2015/08/05 职场文书
python tkinter模块的简单使用
2021/04/07 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android