让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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
php命令行用法入门实例教程
Oct 27 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
php数组冒泡排序算法实例
May 06 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
php压缩文件夹最新版
Jul 18 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
javascript arguments使用示例
2014/12/16 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
详解vue组件基础
2018/05/04 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
对python requests的content和text方法的区别详解
2018/10/11 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Django 静态文件配置过程详解
2019/07/23 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
大学专科生推荐信范文
2013/11/23 职场文书
致百米运动员广播稿
2014/01/29 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
财务人员担保书
2014/05/13 职场文书
学习之星事迹材料
2014/05/17 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
总经理岗位职责范本
2015/04/01 职场文书
乒乓球比赛通知
2015/04/27 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
MySQL查询日期时间
2022/05/15 MySQL
Go语言入门exec的基本使用
2022/05/20 Golang