20150211--Smarty2-02

、綜合案例——PHP+Smarty完成數據分頁

一、數據庫設計

p_id int php

p_title varchar html

p_addtime int 數據庫

2設計HTML界面(ok)
3、編寫程序

fenye.php  fenye.html 數組

效果: 緩存

wpsD356.tmp

、程序篇

常量 服務器

變量 app

經常使用方法 框架

緩存控制技術 數據庫設計

一、常量

SMARTY_DIR 函數

wpsD376.tmp

二、變量

$template_dir :模板路徑

$compile_dir :編譯目錄

$config_dir :配置文件目錄

$cache_dir :緩存目錄

$left_delimiter :左分界符

$right_delimiter :右分界符

$caching :緩存開關,Boolean類型,true和false,默認false

$cache_lifetime :緩存週期,默認狀況3600秒 1個小時

$debugging :調試開關,Boolean類型,默認爲false

$php_handling :Smarty3.0中已基本無效,默認整型

wpsD396.tmp

示例代碼:

wpsD3B6.tmp

三、經常使用方法

assign         :分配變量到模板文件(值傳遞)

assignByRef :分配變量到模板文件(引用傳遞)

append :以數組的形式分配變量到模板(值傳遞)

appendByRef :以數組的形式分配變量到模板(引用傳遞)

clearAllAssign   :清除全部賦值操做

clearAssign :清除指定賦值操做

clearCache     :清除緩存

configLoad :加載配置文件

clearConfig :清除配置信息

display :顯示輸出模板文件

fetch :載入文件到字符串

templateExists  :判斷模板文件是否存在

示例代碼:

例1:assign與assignByRef的區別

wpsD3C7.tmp

例2:append方法

wpsD3E7.tmp

運行效果:

wpsD407.tmp

例3:clearAssign與clearAllAssign

wpsD58F.tmp

例4:configLoad加載配置文件

wpsD5AF.tmp

例5:fetch方法

功能:載入文件到字符串

靜態化技術

www.baidu.com/index.php?id=10

www.baidu.com/index.php?id=11

www.baidu.com/index.php?id=12

www.baidu.com/1407222879.html

www.baidu.com/1407222880.html

wpsD5D0.tmp

效果:

wpsD5E0.tmp

例6:templateExists判斷模板是否存在‘

示例代碼:

wpsD5F1.tmp

、緩存篇

編譯 < 緩存 < 靜態化

一、Smarty中的緩存

默認是關閉,若是要使用,請開啓Smarty緩存開關caching

二、使用Smarty緩存

示例代碼:

wpsD601.tmp

運行效果:

wpsD67F.tmp

三、緩存做用

1)加快網站的訪問速度

2)減小服務器的壓力

3)減小數據庫服務器的壓力你

4、緩存文件從「何」而來?

答:編譯文件

五、Smarty工做原理圖

wpsD6FD.tmp

六、isCached方法

基本語法

$smarty->isCached(「tpl.tpl」)

功能:用於檢測模板是否擁有緩存

例1:經過smarty讀取數據庫中的一條記錄

wpsD75C.tmp

例2:經過緩存技術減小對數據庫的讀取

wpsD7AB.tmp

七、清除緩存

$smarty->clearCache(「tpl.tpl」)

清除指定頁面的緩存

$smarty->clearAllCache()

清除全部頁面緩存(cms系統後臺的清楚緩存按鈕)

wpsD7BC.tmp

經過clearCache能夠清楚指定頁面的緩存,咱們一般用於單頁面處理

公司簡介 -----------------------------------    更新頁面

而咱們的clearAllCache一般用於清除全部緩存,經過用於整個系統中

例如ecshop右上角的清除緩存按鈕,dedecms更新緩存

八、單頁面多緩存

www.shop.com/show.php?id=1 讀取id爲1的產品內容

www.shop.com/show.php?id=2

www.shop.com/show.php?id=3

經過實驗可知,只有第一次訪問時,系統能夠正常讀取,之後每次訪問時,系統自動轉向第一次請求的緩存頁面,不管參數如何變化

如何解決?

答:經過單頁面多緩存

基本語法:

$smarty->display(「tpl」, 「惟一值」)

實例代碼:

wpsD7FB.tmp

該功能主要用於詳細內容頁。

九、緩存集合

問題:以上問題,若是有多個參數

答:能夠經過緩存集合的方式來解決以上問題

示例代碼:

wpsD81C.tmp

以上代碼主要應用於分類頁或列表頁

十、局部緩存

在項目中,可能有些功能或模塊並不須要進行緩存(如點擊次數、評論),如何解決呢?

wpsD83C.tmp

$smarty->assign(「var」, 「value」, true) :當前變量不緩存(PHP入口)

{$var nocache=true} :當前變量不緩存(模板頁)

{nocache}{/nocache} :某個區塊不緩存(模板頁)

示例代碼:

例1:

wpsD85C.tmp

例2:

wpsD86D.tmp

例3:區域緩存

wpsD8BC.tmp

、過濾器

一、什麼是過濾器

tpl源文件 =〉Prefilter =〉編譯tpl文件 => Postfilter =>保存到磁盤=> 編譯過的php文件執行=〉Output Filters(=〉若是有smarty cache的話,Output Filters的內容會緩存) =>結果輸出。

Prefilter:前置(預)過濾器(標籤替換成動態代碼發生的)

Postfilter:後過濾器(編譯文件保存到硬盤時發生的)

OutputFilter:在請求轉發回用戶時觸發此過程

二、驗證過濾器的存在

在Smarty3.0中使用如下方式建立過濾器

$smarty->registerFilter($type, $callback)

$type:定義過濾器的類型

pre  預過濾器

post 後過濾器

output 輸出過濾器

$callback:自定義函數

wpsD8EC.tmp

、整合Smarty到MVC

1)在Core中建立Tools文件夾用於保存第三方框架文件

2)複製smarty到Core中Tools文件夾

3)在View.class.php核心視圖類中引用Smarty入口文件

4)在Action.class.php核心控制器中建立以下語句

public function __constructor() {

   $this->view = new View();

   $this->view->setTemplateDir(‘模板存放路徑’);

}

5)之後就能夠在全部控制器中使用$this->view->assign()與$this->view->display()方法

本站公眾號
   歡迎關注本站公眾號,獲取更多信息