默認(rèn)情況下ThinkPHP框架系統(tǒng)默認(rèn)使用的模板引擎是內(nèi)置模板引擎,內(nèi)置模板引擎支持模板文件中采用php原生態(tài)代碼和模板標(biāo)簽的混合使用.
ThinkPHP官方開(kāi)發(fā)文檔說(shuō),這種默認(rèn)的內(nèi)置模板引擎的性能是高效的,但還不是最佳的,要使模板引擎的性能達(dá)到最佳效率,就要使用PHP本身作為模板引擎.
使用PHP本身作為模板引擎其實(shí)很簡(jiǎn)單,只需在項(xiàng)目的配置文件Conf/config.php上配置:'TMPL_ENGINE_TYPE' =>'PHP'
采用PHP本身作為模板引擎后,意味著你將不能再使在模板文件上使用系統(tǒng)默認(rèn)使用的模板引擎的模板標(biāo)簽,你只能使用原生態(tài)的php代碼.
下面將通過(guò)實(shí)例來(lái)演示一下,采用PHP本身作為模板引擎后,如何在模板上操作php代碼.下載wblog3.1.2_3博客程序并安裝并安裝(你也可以自建項(xiàng)目)
首先配置項(xiàng)目W3note/Conf/config.php文件添加一項(xiàng)配置項(xiàng):
- <?php
- return array(
- ...
- 'TMPL_ENGINE_TYPE' =>'PHP',
- ...
- );
- ?>
然后把控制器/W3note/Lib/Action/IndexAction.class.php和對(duì)應(yīng)模板/W3note/Tpl/Index/index.html的代碼清空以待不同的調(diào)試之用。
好了,基礎(chǔ)工作已經(jīng)做好了,接下來(lái)是調(diào)試記錄.
1、在模板上使用php原生態(tài)代碼,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>使用原生態(tài)的php代碼</title>
- </head>
- <body>
- <?php
- $title= 'www.companysz.com';
- echo $title;//輸出變量
- ?>
- </body>
- </html>
- //輸出:www.companysz.com
像原生態(tài)的php代碼一樣,可以在模板上聲明變量并輸出變量,還可以標(biāo)識(shí)代碼注釋,不過(guò)需要注意的是,必須使用php開(kāi)始標(biāo)志"<?php",用"<php>不行嗎,為什么?接下來(lái)你就知道了.
2、控制器代碼同上面,模板代碼如下:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>使用原生態(tài)的php代碼</title>
- </head>
- <body>
- <php>
- $title='www.companysz.com';
- echo $title;
- </php>
- </body>
- </html>
- //輸出:$title='www.companysz.com'; echo $title;
在模板上把"<?php ?>"換成<php></php>后,結(jié)果無(wú)法解釋變量,說(shuō)明不支持<php></php>標(biāo)簽。
3、在模板上直接使用查詢語(yǔ)句,控制器代碼同1,模板代碼如下:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>使用原生態(tài)的php代碼</title>
- </head>
- <body>
- <?php
- $vo=M('News')->find();
- echo $vo['title'];
- ?>
- </body>
- </html>
- //輸出:歡迎使用WBlog博客程序
控制器在一邊呆著似乎什么也沒(méi)做,模板上竟然可以這樣寫(xiě),實(shí)在太靈活了!
4、在模板上調(diào)用控制器分配的查詢結(jié)果,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>使用原生態(tài)的php代碼</title>
- </head>
- <body>
- <?php
- echo $vo['title'];
- ?>
- </body>
- </html>
- //輸出:歡迎使用WBlog博客程序
這種情況和系統(tǒng)默認(rèn)使用的模板引擎時(shí)寫(xiě)法沒(méi)什么兩樣.
5、在模板上調(diào)用項(xiàng)目函數(shù)庫(kù)的函數(shù),控制器代碼同1,模板代碼如下:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>使用原生態(tài)的php代碼</title>
- </head>
- <body>
- <?php
- echo pwdHash('abc');//調(diào)用項(xiàng)目/W3note/Common/common.php函數(shù)庫(kù)的加密函數(shù)pwdHash()
- ?>
- </body>
- </html>
- //輸出:af10ef457ed637b91955369297b8e640
擯棄了系統(tǒng)默認(rèn)模板引擎笨拙(相對(duì)來(lái)講)的標(biāo)簽語(yǔ)法,函數(shù)的調(diào)用是如此簡(jiǎn)單.
新聞熱點(diǎn)
疑難解答
圖片精選