日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Smarty的应用

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Smarty的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

smarty模板的核心是一個類,下載好的模板中有這么幾個重要的文件夾

(1)libs核心文件夾
(2)int.inc.php這是入口文件
(3)plugins:自己寫的插件文件夾
(4)templates_c:存放編譯好的文件
(5)int.inc.php這是入口文件
(6)定義好常量:不能修改

?

二、怎么用模板?

模板頁面
1.引入模板的入口文件
include("入口文件路徑位置");

2.直接用對象
提供一個方法:向模板中注冊變量的方法(assign(名字,值)
$smarty->assign("ceshi","你好");
提供一個方法:顯示模板的(display(模板的名稱或是路徑))
$smarty->display("ceshi.html");


正常頁面
{assign(名字)}

注意:
1.訪問的是php的頁面,顯示的是html頁面
2.html用到了外部的樣式表,位置是相對于訪問的php頁面來找外部樣式

?

(1)php頁面

<?php $filename = "../cache/huancun.html"; //這個是放緩存的頁面(緩存的不是代碼,而是頁面的源信息)include("../init.inc.php"); //引入入口文件 include("../DBDA.php"); //引入數據庫,要用到數據庫的內容$db = new DBDA(); //造新對象 $sql = "select * from chinastates"; //這是查找Chinastates表中的信息 $attr = $db->Query($sql); //執行這個語句$smarty->assign("shuzu",$attr); //注冊變量信息 $smarty->display("huancun.html"); //顯示模板

  

(2)html頁面

可以用表來顯示數據

<h1>數據列表</h1> <table width="50%" border="1" cellpadding="0" cellspacing="0"><tr><td>代號</td><td>名稱</td><td>操作</td></tr><{foreach $shuzu as $v}> <!--遍歷顯示這個表中的相應信息--><tr><td><{$v[0]}></td><td><{$v[1]}></td><td>操作</td></tr><{/foreach}></table>

  

看下效果

?

二、就是編寫“緩存”功能

進行寫入緩存的時候不是寫入的上面的php頁面,而是這個頁面的源代碼

(1)這個cache文件中要判斷這個huancun.html文件存不存在,存在怎么樣?不存在怎么樣?

結果就是:如果緩存文件存在:直接調用緩存;如果緩存文件不存在:重新緩存。

A.如果這個文件存在(判斷文件存不存在用的是:file_exists()方法)語句:

if(file_exists($filename)) {//直接調用緩存 include($filename); }

  

B.否則(文件不存在)

?重要的是要在上面讀取數據庫的內容加上這幾項:

1.開啟內存緩存;

2.關閉內存緩存;

它們是成對的!!!

else {//重新緩存 ob_start(); //開啟內存緩存include("../init.inc.php");include("../DBDA.php");$db = new DBDA();$sql = "select * from chinastates";$attr = $db->Query($sql);$smarty->assign("shuzu",$attr);$smarty->display("huancun.html");$str = ob_get_contents(); //獲取內存中的緩存內容file_put_contents($filename,$str); //將字符串中的內容放入$filename的文件中ob_flush(); //關閉內存緩存echo "#######################################"; //這個是為了區別哪個是剛出來的緩存文件}

  

看下效果如下圖,因為cache文件夾中沒有hunacun.html才會走上面的“否則”語句,輸出一長串的######

再刷新一下就沒有了,因為cache文件夾中已經有了huancun.html文件

?

三、緩存的有效時間

緩存要是一直都在的話,那么后臺怎么改,前面也不會進行修改,那么就要盡心緩存的有效時間

代碼如下:

$time = 10; //緩存有效期10秒 if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) ) //這是對緩存文件的判斷

  

當緩存文件有了并且10秒之后就會重新又沒有緩存文件時候的輸出####  

?

四、進行分頁的緩存

首先是分頁的php頁面的書寫,在上面的更新的php頁面中進行再一次修改,如下:

<?php $p = 1; if(!empty($_GET["page"])) {$p = $_GET["page"]; }$filename = "../cache/huancun{$p}.html"; //緩存文件存放的位置$time = 10; //緩存有效期10秒 if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) ) {//直接調用緩存 include($filename); } else {//重新緩存 ob_start(); //開啟內存緩存include("../init.inc.php");include("../DBDA.php");$db = new DBDA();$sqll = "select count(*) from chinastates";$zts = $db->StrQuery($sqll); //總條數的執行語句include("../page.class.php");$page = new Page($zts,10); //分頁顯示的條數$sql = "select * from chinastates ".$page->limit; //分頁的$page->limit$attr = $db->Query($sql);$smarty->assign("fpage",$page->fpage()); //分頁信息的顯示$smarty->assign("shuzu",$attr);$smarty->display("huancun.html");$str = ob_get_contents(); //獲取內存中的緩存內容file_put_contents($filename,$str); //將$str的內容寫入$filename的文件中ob_flush(); //關閉內存緩存echo "#######################################";}

  

?

結果就是入下,每一個頁面都會從緩存開始有,10秒后失效

這是第二個頁面,剛開始沒有緩存文件,所以會有####

隨便點一頁,回來后就是有了緩存文件,所以沒有了###

轉載于:https://www.cnblogs.com/li1056822533/p/6771477.html

總結

以上是生活随笔為你收集整理的Smarty的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。