让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 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
php正则校验用户名介绍
Jul 19 PHP
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
PHP数组基本用法与知识点总结
Jun 02 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
ThinkPHP3.1查询语言详解
2014/06/19 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
python的继承知识点总结
2018/12/10 Python
NumPy 数组使用大全
2019/04/25 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
tensorflow如何批量读取图片
2019/08/29 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
python标准库os库的函数介绍
2020/02/12 Python
详解python算法常用技巧与内置库
2020/10/17 Python
校园新闻广播稿
2014/01/10 职场文书
情况说明书格式范文
2014/05/06 职场文书
机关职员工作检讨书
2014/10/23 职场文书
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers