让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程序设计有所帮助。


猜你喜欢
- 误区 #16:多个关于数据的损坏和修复误区 坊间流传的很多版本都不正确 我已经听过很多关于数据修复可以做什么、不可以做什么、什么会导致数据损
- 创建项目和应用django-admin startproject zqxt_views(项目名)cd zqxt_viewspython ma
- 1.引子:函数也是对象木有括号的函数那就不是在调用。def hi(name="yasoob"):return "
- 前言首先要明确Go语言中实质只有值传递,引用传递和指针传递是相对于参数类型来说。个人认为上诉的结论不对,把引用类型看做对指针的封装,一般封装
- 本文实例讲述了php动态生成版权所有信息的方法。分享给大家供大家参考。具体实现方法如下:function copyright($start,
- 最近自己在搭建一个基于webpack的react项目,遇到关于output.publicPath和webpack-dev-server中pu
- 随着互联网的高速发展,人们对安全的要求也越来越高。密码学中两大经典算法,一个是对称加解密,另一个是非对称加解密,这里就来分享一下非对称加密算
- 用v-model绑定单选框能带来很多便捷的开发体验。基础用法<template> <div id="app&qu
- 利用python进行求解,求解的要求是不能使用python内部封装好的函数例如:maxway1:def findmax(data,n): i
- 注:以下所有操作都在CentOS 6.5 x86_64位系统下完成。#准备工作#在安装MySQL之前,请确保已经使用yum安装了以下各类基础
- 本文实例讲述了Go语言模拟while语句实现无限循环的方法。分享给大家供大家参考。具体实现方法如下:这段代码把for语句当成C语言里的whi
- 前言我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着
- 方法一:也是最简单的 直接使用pd.to_datetime函数实现data['交易时间'] = pd.to_datetime
- 无意中看到百度的页面代码,想到了一种声明写法,需要的朋友可以参考下。<!DOCTYPE html> <!--[if IE]
- 有的时候我们希望生成一段时间返回,比如从 2022-01-01 00:00:00 后面的 10 天,这么 10 个 datetime 对象,
- 本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等。1. 文件上传我们知道 Reqeues
- 前言最近使用pytorch训练模型,保存模型后再次加载使用出现了一些问题。记录一下解决方案!一、torch中模型保存和加载的方式1、模型参数
- 水晶报表分页汇总 建三个公式字段,第一个(公式1)输入下面的公式: whileprintingrecords; global numberv
- 前言kettle通过域名或者IP连接Oracle,本地不需要安装Oracle,但是要把Oracle的驱动jar包复制到kettle的lib目
- LFS 的含义为:Large File StorageGit LFS 是 Git 的扩展,旨在解决 Git 无法高效处理大文件的问题。通常情