让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 相关文章推荐
将文件夹压缩成zip文件的php代码
Dec 14 PHP
PHPWind 发帖回帖Api PHP版打包下载
Feb 08 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
php正确输出json数据的实例讲解
Aug 21 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 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
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP通用检测函数集合
2011/02/08 PHP
CentOS安装php v8js教程
2015/02/26 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
德购商城:德国进口直邮商城
2017/06/13 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
市场营销毕业生自荐信范文
2014/04/01 职场文书
代理协议书范本
2014/04/22 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
离婚协议书范文
2015/01/26 职场文书
停电调休通知
2015/04/16 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python