下午筆記圖解smarty模板引擎_第1頁
下午筆記圖解smarty模板引擎_第2頁
下午筆記圖解smarty模板引擎_第3頁
下午筆記圖解smarty模板引擎_第4頁
下午筆記圖解smarty模板引擎_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Smarty 模板引擎模板引擎介紹2第 1 章1.1模板引擎的基本介紹-示意圖2第 1 章模板引擎介紹1.1模板引擎的基本介紹-示意圖l介紹:實(shí)際開發(fā)的時(shí)候,公司是明確的分工的,php 程序員主要負(fù)責(zé) php 代碼(業(yè)務(wù)邏輯相關(guān)),web 前端程序員主要負(fù)責(zé)(html、css、JavaScript)(讓頁面更加美觀用戶體驗(yàn)更好)l示意圖:l現(xiàn)在這樣編寫代碼:需求:商品列表并顯示2.goods_list.php,php 程序員寫的代碼3.goods_temp.php,web 前端程序員寫的代碼上面的寫法有如下不足之處:(1) web 前端不懂 PHP 的語法,的成本就比較高(2) 上面的寫法也不

2、符合目前最流行的 MVC 設(shè)計(jì)模式如何解決上面的問題:使用模板引擎幫我們解決上面的問題l 模板引擎原理示意圖:Html 頁面先使用占位符代替,然后模板引擎再從 PHP 文件最終生成一個(gè)編譯文件,使用真實(shí)數(shù)據(jù)替換占位符真實(shí)數(shù)據(jù),并第 2 章smarty 基本介紹Smarty 模板語法2.1l介紹:目前模板引擎技術(shù)有很多,Laravel 框架(blade 模板引擎)、框架(自己的模板引擎技術(shù))、Smarty 模板引擎技術(shù),雖然有很多模板引擎技術(shù),但是原理都是一樣的,所以我們以 smaty 為例學(xué)習(xí)l如何使用::htttp:/ 大家直接使用我的最新的版本就可以了解壓之后,libs 目錄就是 smar

3、ty 的們的項(xiàng)目中代碼,通常重命名為 smarty 再拷貝到我使用的話,直接加載 smarty 里面的 Smarty.class.php 并實(shí)例化1. template.php 模板文件的代碼:最終生成的編譯文件會(huì)默認(rèn)保存到 templates_c 這個(gè)目錄(后期可以修改)2.2Smarty 模板中變量來源l 介紹:Smarty 中的模板中變量的來源,有如下幾種:n smarty 分配(assign)過來的真實(shí)數(shù)據(jù)上面已經(jīng)舉例說明,這里不再粘代碼n 配置文件數(shù)據(jù)什么是配置文件?配置文件用來保存一些有規(guī)范的、可以在多個(gè)文件中公用的數(shù)據(jù)例如:需要在 html 文件中顯示圖片:如果將來圖片的地址發(fā)生

4、變化了,需要找到所有的 img,修改 src 地址,這樣就會(huì)很繁瑣,所以我們可以將圖片的地址保存到配置文件中,將來在 html 里面使用配置文件的地址,將來有任何變化,只需要修改配置文件即可首先,定義一個(gè)配置文件,保存圖片的地址說明:由于該配置文件,我們點(diǎn)就是那個(gè)文件直接,所以相對的路徑應(yīng)該是被誰引入,出發(fā)其次,在 html 模板中要想使用配置文件,需要先加載配置文件最后,這些文件都會(huì)被 PHP 文件加載過去測試一把:錯(cuò)誤意思:無法加載到 img.conf 文件,需要告訴 smarty 去哪里加載這個(gè)配置文件通過 smarty 對象的 setConfigDir() ,設(shè)置從哪個(gè)目錄、加載配置文

5、件n smarty 保留的變量這些變量是 smarty 保留的、內(nèi)置的,不需要$smarty.now,用來獲得當(dāng)前的時(shí)間戳、加載,可以直接使用$smarty.const.常量名,用來獲得 PHP 文件中定義的常量$smarty.config,獲得配置文件中的配置項(xiàng)$smarty.current_dir ,當(dāng)前文件所在的目錄4.smarty.php 代碼:n PHP 請求變量在 html 模板中,還可以獲得 PHP 提供的 http 請求是攜帶的變量、PHP 的環(huán)境變量等一下:2.3Smarty 模板中變量調(diào)節(jié)器l 介紹:變量調(diào)節(jié)器,就是對模板中的變量進(jìn)行調(diào)節(jié)、修飾作用例如:模板中可以使用$sm

6、arty.now獲得當(dāng)前的時(shí)間戳,用戶看不懂時(shí)間戳的,所以我們需要對變量進(jìn)行修飾,將其轉(zhuǎn)換成日期格式就好了l如何使用:語法:模板變量|修飾器:傳遞的參數(shù)l變量調(diào)節(jié)器:date_format:將時(shí)間戳轉(zhuǎn)換成日期格式capitalize:首字母大寫upper:字符串整體大寫count_characters:統(tǒng)計(jì)字符個(gè)數(shù)default:默認(rèn)值如果變量為空、空字符串,就可以使用默認(rèn)值代替indent:字符縮進(jìn)參數(shù) 1:縮進(jìn)的字符數(shù)量參數(shù) 2:默認(rèn)顯示空格,可以指定字符代替escape: 用來轉(zhuǎn)碼的,有 2 個(gè)參數(shù),默認(rèn)采用實(shí)體轉(zhuǎn)碼,可以將其修改為 url 就會(huì)采用 url 轉(zhuǎn)碼舉例說明:如果在模板中,

7、不加任何修飾的話,會(huì)輸出 hello 這個(gè)內(nèi)容,而且會(huì)輸出 10 次,這樣就很,所以我們要對其內(nèi)容進(jìn)行實(shí)體轉(zhuǎn)碼(將轉(zhuǎn)換成實(shí)體符號)除了實(shí)體轉(zhuǎn)碼,escape 調(diào)節(jié)器還提供了 url 轉(zhuǎn)碼,通常我們在 url 地址欄中傳輸中文、特殊符號,服務(wù)器接收的時(shí)候容易出錯(cuò),所有我們需要對 url 傳輸?shù)闹形?、特殊符號進(jìn)行 url 轉(zhuǎn)碼再傳輸url 轉(zhuǎn)碼之后的效果就是這樣:truncate,字符串截取參數(shù) 1:截取的長度,參數(shù) 2:截取之后追加在字符串后面的字符,該追加的字符會(huì)被計(jì)算在截取的長度之內(nèi),例如:2.4Smarty 模板中流程控制語句l介紹:在 html 模板中,可以使用 PHP 的流程控制語句f

8、oreach forif elseifelse include extendsblock literal代碼演示:(1)foreach 用來在模板中遍歷數(shù)組,語法格式:foreach(遍歷的數(shù)組 as $k=$v)foreachelse當(dāng)遍歷的數(shù)組為空的時(shí)候執(zhí)行這里l/foreach代碼:(2)for 循環(huán):注意:可以通過 step 屬性設(shè)置步長值(3)if、elseif、else 的使用(4)include,該實(shí)際開發(fā)的時(shí)候,是用來加載其他的模板文件的頭部(導(dǎo)航)、底部(所有),而且每個(gè)網(wǎng)頁頭部、底部都是固定的,所以我們就沒有必要在每個(gè)頁面都寫一遍了,我們可以將這些公共的代碼(頭部的導(dǎo)航、底

9、部的)提取出來,哪里需要哪里 include 即可哪里需要公共的代碼,在哪里 include 加載即可(5)模板繼承模板繼承實(shí)現(xiàn)的功能和 include 非常類似,只是模板繼承比 include 更加強(qiáng)大include 只是用來加載外部模板文件的,不能修改被加載的文件的代碼,而我們的模板繼承就可以實(shí)現(xiàn)(1)將公共的代碼提取到公共的文件(DOCTYPE、head、css 等),然后在公共的模板里面指定哪些地方可以被重寫,通過block指定哪些地方可以被重寫(2)我們的模板要繼承該公共的模板(類似于 include)如果想覆蓋、重寫公共的模板里面的內(nèi)容的話,也是通過block重寫注意:我們的模板繼

10、承公共模板之后,公共模板的內(nèi)容會(huì)覆蓋我們的內(nèi)容(3)block還提供了 2 個(gè)參數(shù):append 表示追加在原來內(nèi)容的后面,prepend追加到原來內(nèi)容的前面演示一下:最后被 smarty 加載一下(6)literal,用來表示不采用 smarty 的語法去應(yīng)用場景如下:一下,報(bào)如下錯(cuò)誤:錯(cuò)誤指的是 css 里面的,由于 smarty 的默認(rèn)的占位符()就是,一看到花括號就去了,由于這里不需要 smarty,所以我們就可以使用literal包起來由于繼承的時(shí)候,公共模板的內(nèi)容會(huì)覆蓋掉我們的主模板的內(nèi)容,所以通常要將公共的代碼都保存到公共的文件中第 3 章Smarty 緩存3.1為什么使用緩存l

11、需求分析:商品的信息,并顯示到模板中10.smarty_goods.php10.goods.htmll 分析:上面的代碼有如下不足之處,我們通過圖例演示由于張三、;李四、王五三個(gè)客戶端的數(shù)據(jù)都是一樣的,而且每次都要去數(shù)據(jù)庫,所以這個(gè)效率是很低的既然知道了原因,我們就應(yīng)該修改:思路:只要有一個(gè)人將商品的信息出來,就保存到服務(wù)器的一個(gè)文件中,其他用戶的,直接讓其該緩存的文件即可Smarty 實(shí)現(xiàn)緩存:再來一下:測試一下,以后的是不是這個(gè)緩存文件呢?修改數(shù)據(jù)庫的數(shù)據(jù),查看一下的是否是緩存的數(shù)據(jù)發(fā)現(xiàn)網(wǎng)頁中顯示的還是緩存的數(shù)據(jù)3.2局部不緩存l介紹:局部不緩存,指的是中大部分使用緩存了,但是一些局部的地

12、方(商品價(jià)格、天氣情況、股票價(jià)格)不緩存l代碼實(shí)現(xiàn):局部不緩存通過模板中的 insert實(shí)現(xiàn)的,smarty 看到 insert的時(shí)候,永遠(yuǎn)會(huì)執(zhí)行,即使該頁面是緩存的,看到 insert之后還是會(huì)執(zhí)行Insert的使用需要遵循如下規(guī)范:規(guī)范 1:定義 insert時(shí):name 屬性指向的是調(diào)用的函數(shù)如果傳遞參數(shù),通過鍵值對的形式傳遞規(guī)范 2:getPrice 函數(shù)文件名規(guī)范必須在 smarty/plugins 目錄下定義規(guī)范 3:文件里面函數(shù)名規(guī)范smarty_insert_函數(shù)名3.3單模板多緩存l 介紹:單模板多緩存,一個(gè)模板生成多個(gè)緩存文件l 舉例演示:先創(chuàng)建一張書籍表:create table book(id int primary key auto_increment,title varchar(32)engine myisamdefault charset utf8;添加幾條測試數(shù)據(jù):接下來,我在 url 地址欄傳遞不同的參數(shù),根據(jù)參數(shù)對應(yīng)的書名測試一下:不管傳遞的 id 是幾,返回的都是,分析原因:Smarty 在 display 的時(shí)候,生成了緩存文件,后面讓一個(gè)模板生成多個(gè)緩存文件呢?的都是該緩存文件,如何需要通過 display 的第二個(gè)參數(shù)實(shí)現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論