默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文件中采用php原生态代码和模板标签的混合使用。
ThinkPHP官方开发文档说,这种默认的内置模板引擎的性能是高效的,但还不是最佳的。要使模板引擎的性能达到最佳效率,就要使用PHP本身作为模板引擎。
使用PHP本身作为模板引擎其实很简单,只需在项目的配置文件Conf/config.php上配置:
'TMPL_ENGINE_TYPE' =>'PHP'
采用PHP本身作为模板引擎后,意味着你将不能再使在模板文件上使用系统默认使用的模板引擎的模板标 签,你只能使用原生态的php代码。
下面将通过实例来演示一下,采用PHP本身作为模板引擎后,如何在模板上操作php代码。
下载wblog3.1.2_3博客程序并安装(你也可以自建项目)
首先配置项目W3note\Conf\config.php文件添加一项配置项:
1 | <?php |
2 | return array ( |
3 | ... |
4 | 'TMPL_ENGINE_TYPE' => 'PHP' , |
5 | ... |
6 | ); |
7 | ?> |
然后把控制器\W3note\Lib\Action\IndexAction.class.php和对应模板\W3note\Tpl\Index\index.html的
代码清空以待不同的调试之用。
好了,基础工作已经做好了,接下来是调试记录:
1、在模板上使用php原生态代码
IndexAction.class.php控制器代码
1 | <?php |
2 | class IndexAction extends Action { |
3 | public function index(){ |
4 | $this ->display(); |
5 | } |
6 | } |
index.html模板代码:
01 | <html> |
02 | <head> |
03 | <meta http-equiv= "Content-Type" content= "text/html;charset=UTF-8" > |
04 | <title>使用原生态的php代码</title> |
05 | </head> |
06 | <body> |
07 | <?php |
08 | $title = '网志博客' ; |
09 | echo $title ; //输出变量 |
10 | ?> |
11 | </body> |
12 | </html> |
输出:网志博客
像原生态的php代码一样,可以在模板上声明变量并输出变量,还可以标识代码注释,不过需要注意的是,
必须使用php开始标志"<?php",用"<php>不行吗,为什么?接下来你就知道了。
2、控制器代码同上面,模板代码如下
01 | <html> |
02 | <head> |
03 | <meta http-equiv= "Content-Type" content= "text/html;charset=UTF-8" > |
04 | <title>使用原生态的php代码</title> |
05 | </head> |
06 | <body> |
07 | <php> |
08 | $title = '网志博客' ; |
09 | echo $title ; |
10 | </php> |
11 | |
12 | </body> |
13 | </html> |
输出:$title='网志博客'; echo $title;
在模板上把"<?php ?>"换成<php></php>后,结果无法解释变量,说明不支持<php></php>标签。
3、在模板上直接使用查询语句
控制器代码同1,模板代码如下
01 | <html> |
02 | <head> |
03 | <meta http-equiv= "Content-Type" content= "text/html;charset=UTF-8" > |
04 | <title>使用原生态的php代码</title> |
05 | </head> |
06 | <body> |
07 | <?php |
08 | $vo =M( 'News' )->find(); |
09 | echo $vo [ 'title' ]; |
10 | ?> |
11 | |
12 | </body> |
13 | </html> |
输出:欢迎使用WBlog博客程序
控制器在一边呆着似乎什么也没做,模板上竟然可以这样写,实在太灵活了!
4、在模板上调用控制器分配的查询结果
IndexAction.class.php控制器代码
1 | <?php |
2 | class IndexAction extends Action { |
3 | public function index(){ |
4 | $vo =M( 'News' )->find(); |
5 | $this ->assign( 'vo' , $vo ); |
6 | $this ->display(); |
7 | } |
8 | } |
模板index.html代码
01 | <html> |
02 | <head> |
03 | <meta http-equiv= "Content-Type" content= "text/html;charset=UTF-8" > |
04 | <title>使用原生态的php代码</title> |
05 | </head> |
06 | <body> |
07 | <?php |
08 | |
09 | echo $vo [ 'title' ]; |
10 | ?> |
11 | |
12 | </body> |
13 | </html> |
输出:欢迎使用WBlog博客程序
这种情况和系统默认使用的模板引擎时写法没什么两样。
5、在模板上调用项目函数库的函数
控制器代码同1,模板代码如下
01 | <html> |
02 | <head> |
03 | <meta http-equiv= "Content-Type" content= "text/html;charset=UTF-8" > |
04 | <title>使用原生态的php代码</title> |
05 | </head> |
06 | <body> |
07 | <?php |
08 | echo pwdHash( 'abc' ); //调用项目\W3note\Common\common.php函数库的加密函数pwdHash() |
09 | ?> |
10 | |
11 | </body> |
12 | </html> |
输出:af10ef457ed637b91955369297b8e640
摈弃了系统默认模板引擎笨拙(相对来讲)的标签语法,函数的调用是如此简单!
总结:在ThinkPHP中使用PHP本身作为模板引擎,可以使模板引擎的性能达到最佳效率,在模板上需要使 用原生态的php语法,写法比较活活,但是系统默认模板引擎的模板标签将失去作用。