讓ThinkPHP的模板引擎達(dá)到最佳效率的方法詳解
本文分析了讓ThinkPHP的模板引擎達(dá)到最佳效率的方法。分享給大家供大家參考,具體如下:
默認(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= '網(wǎng)志博客'; echo $title;//輸出變量 ?> </body> </html>
輸出:
$title='網(wǎng)志博客'; echo $title;
在模板上把"<?php ?>"換成<php></php>后,結(jié)果無(wú)法解釋變量,說(shuō)明不支持<php></php>標(biāo)簽。
2、在模板上直接使用查詢(xún)語(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í)在太靈活了!
3、在模板上調(diào)用控制器分配的查詢(xún)結(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)什么兩樣。
4、在模板上調(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)單!
總結(jié):在ThinkPHP中使用PHP本身作為模板引擎,可以使模板引擎的性能達(dá)到最佳效率,在模板上需要使用原生態(tài)的php語(yǔ)法,寫(xiě)法比較活活,但是系統(tǒng)默認(rèn)模板引擎的模板標(biāo)簽將失去作用。
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》、《smarty模板入門(mén)基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
關(guān)于Curl在Swoole協(xié)程中的解決方案詳析
這篇文章主要給大家介紹了關(guān)于Curl在Swoole協(xié)程中的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swoole具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09不使用php api函數(shù)實(shí)現(xiàn)數(shù)組的交換排序示例
這篇文章主要介紹了不使用php api函數(shù)實(shí)現(xiàn)數(shù)組的交換排序示例,需要的朋友可以參考下2014-04-04AJAX PHP無(wú)刷新form表單提交的簡(jiǎn)單實(shí)現(xiàn)(推薦)
下面小編就為大家?guī)?lái)一篇AJAX PHP無(wú)刷新form表單提交的簡(jiǎn)單實(shí)現(xiàn)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09自編函數(shù)解決pathinfo()函數(shù)處理中文問(wèn)題
本文主要介紹了小編在使用pathinfo()函數(shù)處理中文文件名時(shí)遇到的一個(gè)小BUG的處理方式,有相同問(wèn)題的童鞋們可以參考下2014-11-11thinkPHP模板算術(shù)運(yùn)算相關(guān)函數(shù)用法分析
這篇文章主要介紹了thinkPHP模板算術(shù)運(yùn)算相關(guān)函數(shù)用法,結(jié)合簡(jiǎn)單實(shí)例形式分析了thinkPHP關(guān)于算數(shù)運(yùn)算與參數(shù)傳遞的相關(guān)技巧,需要的朋友可以參考下2016-07-07