让ThinkPHP的模板引擎达到最佳效率的方法详解
作者:chinalorin 发布时间:2023-11-14 17:06:40
本文分析了让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程序设计有所帮助。
猜你喜欢
- 今天,在项目中遇到一个问题,两个js页面要共享一个就js对象。js全局变量和静态变量都不行,其他苦逼的小农们就不要去强求了。而LZ又不想用c
- Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。1.PHP加密扩展库Mcrypt安装在标准的PHP安装过程中并没
- 无法远程登入MySQL数据库的几种解决办法方法一:尝试用MySQL Adminstrator GUI Tool登入MySQL Server,
- 那里都有狭窄的空间:网页横幅、新闻标题处的空间、柱状的广告,但一张来自照相机的照片却要大很多,它们的比例一般是 6 × 4 英寸 。你如何处
- 一个很不错的效果,用键盘的箭头键控制一个漂亮的箭头!也许能给你启发,做出一款有趣的小游戏呢!运行代码框<html xmlns:v=&q
- 感谢人类方方面面的创新,今天Web开发已经不需要在如何设计网站上面浪费时间了。框架和库帮助web开发者得以专注于真正的开发工作上。下面的这些
- Javascript 中的闭包其实很改语言中很难理解的一部分。感谢 Stuart 提供了那么棒的 PPT,它深入浅出的解释了 Javascr
- 本文实例借鉴mvc模式,核心数据为model,维护1个矩阵,0表无雷,1表雷,-1表已经检测过。本例使用python的tkinter做gui
- 模糊数据库指能够处理模糊数据的数据库。一般的数据库都是以二直逻辑和精确的数据工具为基础的,不能表示许多模糊不清的事情。随着模糊数学理论体系的
- 代码如下:<form action="insert.asp" method="pos
- 什么是结构体Go语言中没有“类”的概念,也不支持“类”的继承
- 问题背景:日常对Sql Server 2005关系数据库进行操作时,有时对数据库(如:Sharepoint网站配置数据库名Sharepoin
- 信息安全的核心就是数据库的安全,也就是说数据库加密是信息安全的核心问题。数据库数据的安全问题越来越受到重视,数据库加密技术的应用极大的解决了
- 本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL
- 普通MySQL运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至do
- Facebook的网站速度做为最关键的公司任务之一。在2009年,我们成功地实现了Facebook网站速度提升两倍 。而正是我们的工程师团队
- 前言本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能。示例图如上图,我们
- 目录 一、环境配置 二、ASP对Excel的基本操作 三、ASP操作Excel生成数据表 四、ASP操作Excel生成Chart图 五、服务
- 在应用程序的开发中,有些输入信息是动态的,比如我们要注册一个员工的工作经历,比如下图如果做成死的,只能填写三个,如果是四个呢?或者更多呢,那
- js 读取csv内容拼接成jsonformdata对象上传了csv文件,读取文件内容拼接成json对象var form = new Form