網(wǎng)站開發(fā)技術(shù)之模版smarty(ppt 30頁).ppt_第1頁
網(wǎng)站開發(fā)技術(shù)之模版smarty(ppt 30頁).ppt_第2頁
網(wǎng)站開發(fā)技術(shù)之模版smarty(ppt 30頁).ppt_第3頁
網(wǎng)站開發(fā)技術(shù)之模版smarty(ppt 30頁).ppt_第4頁
網(wǎng)站開發(fā)技術(shù)之模版smarty(ppt 30頁).ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、網(wǎng)站開發(fā)技術(shù)高級篇,日照職業(yè)技術(shù)學(xué)院 毛書朋 2008.4,第七部分 模版技術(shù)(smarty),提綱,模版smarty的產(chǎn)生 什么是smarty Smarty的特點 Smarty的應(yīng)用 安裝 第一個程序 詳解,模版smarty的產(chǎn)生,一個應(yīng)用程序的開發(fā)流程如下: 提交計劃文檔 界面設(shè)計者美工制作了網(wǎng)站的外觀模型,然后把它交給后臺程序員。 程序員使用PHP實現(xiàn)商業(yè)邏輯,同時使用外觀模型做成基本架構(gòu)。然后工程被返回到html頁面設(shè)計者繼續(xù)完善。 就這樣工程可能在后臺程序員和頁面設(shè)計者之間來來回回好幾次。由于后臺程序員不喜歡干預(yù)任何有關(guān)html標(biāo)簽,同時也不需要美工們和php鬼混在一起;美工設(shè)計者只

2、需要配置文件,動態(tài)區(qū)塊和其他的界面部分,不必要去接觸那些錯綜復(fù)雜的php代碼 。 因此,這時候有一個很好的模板支持就顯得很重要了。,模版smarty的產(chǎn)生,早在1999年后期,我們就已經(jīng)開始為模板引擎寫說明文檔。在完成這個文檔之后,我們開始用c寫一個模板引擎,并有希望被包含到php里去。在 撞上了許多的技術(shù)難題的同時,“什么是模板應(yīng)該做的,什么不該做”這個問題,也被熱烈的討論著。從這些經(jīng)驗,我們決定應(yīng)該用Php將模板引擎寫成一個類,讓任何覺得合適的人使用它。,模版smarty的產(chǎn)生,所以我們寫了一個引擎,從此就有了smarty.(注:這個類以前從來沒有公開發(fā)表過)。這個類幾乎達(dá)到了我們所有的要

3、求:常規(guī)變量替換,支持包括其他模板,使用配置文件集成設(shè)置,嵌入Php代碼,限制if語句的作用,還有更多的可以多層嵌套的健壯的動態(tài)區(qū)塊。它用常規(guī)表達(dá)式做到這一切,于是代碼變得相當(dāng)簡潔,我們可以說:令人費解的。在每次調(diào)用的時候,都要去解析 那些語法和常規(guī)表達(dá)式,于是在大型應(yīng)用的時候,它顯然慢了下來。在程序員的眼光看來,最大的問題還是使用php腳本建立和處理模板和動態(tài)區(qū)塊的所有必要工作。我們應(yīng)該如何使他變得更簡單?,模版smarty的產(chǎn)生,我們可以想象smarty應(yīng)該有怎樣的最后表現(xiàn)。我們知道php代碼如果沒有了模板解析的開銷將有多快,我們也知道從一般的美工看來php語言是多么的“恐怖”,然而這一切

4、可以被一種更簡單的模板語法掩飾掉。我們應(yīng)該怎樣把這兩種方法的長處結(jié)合起來?于是,Smarty誕生了.,什么是smarty,Smarty是一個php模板引擎。更準(zhǔn)確的說,它分開了邏輯程序和外在的內(nèi)容,提供了一種易于管理的方法??梢悦枋鰹閼?yīng)用程序員和美工扮演了不同的角色,因為在大多數(shù)情況下 ,他們不可能是同一個人。 例如,你正在創(chuàng)建一個用于瀏覽新聞的網(wǎng)頁,新聞標(biāo)題,標(biāo)簽欄,作者和內(nèi)容等都是內(nèi)容要素,他們并不包含應(yīng)該怎樣去呈現(xiàn)。在Smarty的程序里,這些被忽略了。模板設(shè)計者們編輯模板,組合使用html標(biāo)簽和模板標(biāo)簽去格式化這些要素的輸出(html表格,背景色,字體大小,樣式表,等等)。有一天程序員

5、想要改變文章檢索的方式(也就是程序邏輯的改變)。這個改變不影響模板設(shè)計者,內(nèi)容仍將準(zhǔn)確的輸出到模板。同樣的,哪天美工吃多了想要完全重做界面,也不會影響到程序邏輯。因此,程序員可以改變邏輯而不需要重新構(gòu)建模板,模板設(shè)計者可以改變模板而不影響到邏輯。,Smarty的特點-優(yōu)點,速度:采用smarty編寫的程序可以獲得最大速度的提高,這一點是相對于其它的模板引擎技術(shù)而言的。 2. 編譯型:采用smarty編寫的程序在運行時要編譯成一個非模板技術(shù)的PHP文件,這個文件采用了PHP與HTML混合的方式,在下一次訪問模板時將WEB請求直接轉(zhuǎn)換到這個文件中,而不再進(jìn)行模板重新編譯(在源程序沒有改動的情況下)

6、,Smarty的特點-優(yōu)點,3. 緩存技術(shù):smarty選用的一種緩存技術(shù),它可以將用戶最終看到的HTML文件緩存成一個靜態(tài)的HTML頁,當(dāng)設(shè)定smarty的cache屬性為true時,在smarty設(shè)定的cachetime期內(nèi)將用戶的WEB請求直接轉(zhuǎn)換到這個靜態(tài)的HTML文件中來,這相當(dāng)于調(diào)用一個靜態(tài)的HTML文件。 4. 插件技術(shù):smarty可以自定義插件。插件實際就是一些自定義的函數(shù)。 5. 模板中可以使用if/elseif/else/endif。在模板文件使用判斷語句可以非常方便的對模板進(jìn)行格式重排。,Smarty的特點-缺點,1. 需要實時更新的內(nèi)容。例如像股票顯示,它需要經(jīng)常對數(shù)

7、據(jù)進(jìn)行更新,這類型的程序使用smarty會使模板處理速度變慢。 2. 小項目。小項目因為項目簡單而美工與程序員兼于一人的項目,使用smarty會喪失php開發(fā)迅速的優(yōu)點。,Smarty的應(yīng)用-安裝,安裝smarty的環(huán)境:php版本4.06以上版本。 安裝smarty方法非常簡單,從 其它高級安裝使用方法請看手冊. 安裝Smarty發(fā)行版在/libs/目錄里的庫文件(就是解壓了). 這些php文件你可不能亂畫哦.這些文件被所有應(yīng)用程序共享,也只能在你升級到新版的smarty的時候得到更新。,Smarty的應(yīng)用-第一個程序,編寫一個模版文件:index.tpl * 顯示是smarty變量識符里的

8、用*包含的文字為注釋內(nèi)容 * 我的第一個smarty應(yīng)用實例 大家好,我是$name, 歡迎大家訪問我的第一個smarty應(yīng)用實例!。 CopyRight/設(shè)置模板目錄 $smarty-compile_dir = ./templates_c; /設(shè)置編譯目錄 $smarty-left_delimiter = ; /定義左邊界符 $smarty-right_delimiter = ; /定義右邊界符 $smarty-assign(“name”, “來自火星的ET”); /進(jìn)行模板變量替換 /編譯并顯示位于./templates下的index.tpl模板 $smarty-display(index

9、.tpl); ?,Smarty的應(yīng)用-詳解,一、應(yīng)用的基本設(shè)置 包含smarty類文件 include_once(./comm/Smarty.class.php); 建立smarty實例對象$smarty $smarty = new Smarty(); 設(shè)置模板目錄 $smarty-template_dir = ./templates; 設(shè)置編譯目錄 $smarty-compile_dir = ./templates_c;,Smarty的應(yīng)用-詳解,一、應(yīng)用的基本設(shè)置 設(shè)置緩存目錄 $smarty-cache_dir=./cache; 設(shè)置緩存時間 $smarty-cache_lifetime

10、=60*60*24; 緩存設(shè)置 $smarty-caching=false|true; 這里是調(diào)試時設(shè)為false,發(fā)布時請使用true,Smarty的應(yīng)用-詳解,一、應(yīng)用的基本設(shè)置 定義邊界符 $smarty-left_delimiter = ; $smarty-right_delimiter = ; 進(jìn)行模板變量替換 $smarty-assign(“name”, “變量內(nèi)容”); 編譯并顯示位于./templates下的模板 $smarty-display(“模版文件名); $smarty-display(index.tpl);,Smarty的應(yīng)用-詳解,一、應(yīng)用的基本設(shè)置 模版文件中的注

11、釋 $smarty-left_delimiter * * $smarty-right_delimiter * * 模版文件中的文件包含(引用) $smarty-left_delimiter include file=“模版文件名 $smarty-right_delimiter include file=header.tpl *頁面頭*,Smarty的應(yīng)用-詳解,二、if,elseif,else if $sex eq “1 Welcome Sir. elseif $sex eq “2 Welcome Maam. else Welcome! /if,Smarty的應(yīng)用-詳解,三、foreach f

12、oreach:用于循環(huán)簡單數(shù)組,它是一個選擇性的section循環(huán),它的定義格式為: foreach from=$array item=array_idforeachelse/foreach 其中,from 指出要循環(huán)的數(shù)組變量,item為要循環(huán)的變量名稱,循環(huán)次數(shù)由from所指定的數(shù)組變量的個數(shù)所決定。foreachelse用來當(dāng)程序中傳遞過來的數(shù)組為空時的處理。,Smarty的應(yīng)用-詳解,編寫一模版文件:index4.tpl 新聞編號 新聞標(biāo)題 foreach from=$newsArray item=newsID $newsID.newsID $newsID.newsTitleforea

13、chelse對不起,數(shù)據(jù)庫中沒有新聞輸出!/foreach,Smarty的應(yīng)用-詳解,編寫一php文件:index4.php $array = array(newsID=1, newsTitle=第1條新聞); $array = array(newsID=2, newsTitle=第2條新聞); $array = array(newsID=3, newsTitle=第3條新聞); $array = array(newsID=4, newsTitle=第4條新聞); $array = array(newsID=5, newsTitle=第5條新聞); $array = array(newsID=

14、6, newsTitle=第6條新聞); $smarty-assign(newsArray, $array);,Smarty的應(yīng)用-詳解,四、section section的產(chǎn)生是為解決foreach的不足的,與foreach一樣,它用于設(shè)計模板內(nèi)的循環(huán)塊,它較為復(fù)雜,可極大程序上滿足程序需要,所以在程序中我習(xí)慣使用它而不使用foreach,基本原形為: section name = name loop = $varName start = $start step = $step max = $max show = true,Smarty的應(yīng)用-詳解,四、section name: secti

15、on的名稱,不用加$loop: 要循環(huán)的變量,在程序中要使用assign對這個變量進(jìn)行操作。$start: 開始循環(huán)的下標(biāo),循環(huán)下標(biāo)默認(rèn)由0開始$step: 每次循環(huán)時下標(biāo)的增數(shù)$max: 最大循環(huán)下標(biāo)$show: boolean類型,決定是否對這個塊進(jìn)行顯示,默認(rèn)為true,Smarty的應(yīng)用-詳解,編寫一模版文件:index5.tpl 這里將輸出一個數(shù)組:新聞編號 新聞標(biāo)題 section name=loop loop=$News$Newsloop.newsID$Newsloop.newsTitlesectionelse對不起,沒有任何新聞輸入!/section,Smarty的應(yīng)用-詳解,

16、五、PHP+MySQL+Smarty的使用 創(chuàng)建數(shù)據(jù)庫 Create databases news 創(chuàng)建數(shù)據(jù)表 CREATE TABLE IF NOT EXISTS news_info ( id int(11) NOT NULL auto_increment, title varchar(60) NOT NULL, PRIMARY KEY (id), UNIQUE KEY id (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 插入數(shù)據(jù),Smarty的應(yīng)用-詳解,五、PHP+MySQL+Smarty的使用 編寫一模版文

17、件:index6.tpl 這里將輸出一個數(shù)組: 新聞編號 新聞標(biāo)題 section name=loop loop=$News start=$start step=$step $Newsloop.id $Newsloop.titlesectionelse 對不起,沒有任何新聞輸入! /section,Smarty的應(yīng)用-詳解,五、PHP+MySQL+Smarty的使用 編寫一模版文件:index6.php $db = mysql_connect(localhost, root,root) or die(數(shù)據(jù)庫連接錯誤!); mysql_select_db(news, $db); $query=select * from news_info; $rst=mysql_query($query,$db)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論