程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php模板

php模板

編輯:關於PHP編程

模板其實就是php和html的分離,有人也說mvc啥的。
php處理程序,把動態內容保存到變量裡面,然後通過模板輸出這些變量的內容,這就是模板
你可以
$rows = $db->getAll($sql);
require "tpl.html";
來輸出。
你也可以
$tpl->setVar("rows",$rows);
$tpl->display("tpl.html");
來輸出,總之他是輸出變量裡面的內容。

我感覺模板應該有下面的特征
1,就是html頁面
2,即見即得
3,書寫簡化,容易擴展。(這一點非常重要,其實就是換個簡單的書寫形式)
smarty自定義函數還有什麼的,還有其他模板也有類似功能。比如{article.addtime:date:Y-m-d} {article.content:nl2br:}
如果能做到上面的三點,我感覺就是一個很好的模板。
很多人說直接用php來做html模板,我比較反對這種形式
1,php代碼看不到。
2,書寫太繁,太麻煩。
如果看起來麻煩,書寫也麻煩,我拿模板來干什麼,做花瓶?

discuz的模板就是一個不錯的模板,可惜2,3兩點他做得不太好,我自己也做個模板。到現在也一直用,差什麼就加什麼,對我來說他就是一個好的模板。
1,就是html頁面
2,即見即得,你看到的什麼樣子,輸出就是什麼樣子。不像很多人去搞個href="$cssPath/css.css"這樣去搞個,div+css的頁面這種模板美工改起來肯定沒少吃苦。
3,書寫簡化   其實就是函數的簡寫。就如上面的,比如發布時間需要格式化可以任意改,比如內容要吧回車變成換行,比如要把內容弄到一個編輯器。{content:htmleditor:},比如。。。。,他就是一個簡寫,這樣做起來什麼事情都事倍功半。還記得那個頁面的調用吧?比如最新產品顯示8個,最新。。。顯示10個。(很多所謂的cms采用標簽)
其實說白了就是一個foreach,傳入參數返回一個二維數組。
於是就有了
<!--{loop NewProduct:sortid=1;limit=8 $product}-->
{product.productname:cut:20} ....
<!---{/loop}-->
有一天客戶要求變了,要調用精華產品,於是
<!--{loop NewProduct:sortid=1;limit=8 $product}-->
變成了
<!--{loop NewProduct:sortid=1;digest=1;limit=8 $product}-->
我感覺這就是簡化,美工只要明白,這裡應該是循環就行了,到現在和我合作的美工還沒有一個不會改我的模板的,雖然他不懂程序。
4,模板吧,你要追求速度,緩存吧。
緩存真的有用嗎?俺為啥要緩存?
很多人說設置下緩存時間,html緩存就行了,這個能叫緩存麼?如果是動態網頁,上面寫的
歡迎你,{username},你還能把他緩存了?你說不緩存吧,下面的調用又太多,咋辦捏?
這時候就要用到局部緩存,什麼叫局部緩存,就是緩存頁面的也部分。
其實說白了也就是那些調用。
<!--{loop NewProduct:sortid=1;limit=8 $product}-->
這種地方的調用,如果首頁顯示20個分類的最新5篇文章,那打開頁面,光這些文章調用就要20次查詢。局部緩存吧
<!--{#loop NewProduct:sortid=1;limit=8 $product}-->
loop我加一個#就讓他緩存了。
我加20個#,首頁的調用就沒數據庫查詢了,好像有的地方必須每次都調用最新的,咋辦呢,把#去掉吧。

模板就是模板,雖然只負責顯示,不一定就不重要,如果讓模板變得簡單倒是我們應該考慮的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved