PHP高級課 Smarty模板筆記整理_第1頁
PHP高級課 Smarty模板筆記整理_第2頁
PHP高級課 Smarty模板筆記整理_第3頁
PHP高級課 Smarty模板筆記整理_第4頁
PHP高級課 Smarty模板筆記整理_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 Smarty筆記day011. 什么是模板引擎模板引擎(這里特指用于Web開發(fā)的模板引擎)是為了使用戶界面與業(yè)務(wù)數(shù)據(jù)(內(nèi)容)分離而產(chǎn)生的,它可以生成特定格式的文檔,用于網(wǎng)站的模板引擎就會(huì)生成一個(gè)標(biāo)準(zhǔn)的HTML文檔。模板引擎不屬于特定技術(shù)領(lǐng)域,它是跨領(lǐng)域跨平臺(tái)的概念。在Asp下有模板引擎,在PHP下也有模板引擎,在C#下也有,甚至JavaScript、WinForm開發(fā)都會(huì)用到模板引擎技術(shù)。2. 原理:模板引擎的實(shí)現(xiàn)方式有很多,最簡單的是“置換型”模板引擎,這類模板引擎只是將指定模板內(nèi)容(字符串)中的特定標(biāo)記(子字符串)替換一下便生成了最終需要的業(yè)務(wù)數(shù)據(jù)(比如網(wǎng)頁)。置換型模板引擎實(shí)現(xiàn)簡單,但

2、其效率底下,無法滿足高負(fù)載的應(yīng)用需求(比如有海量訪問的網(wǎng)站),因此還出現(xiàn)了“解釋型”模板引擎和“編譯型”模板引擎等。Smarty模版引擎屬于“編譯型”模板引擎。3. 用途:模板引擎可以讓(網(wǎng)站)程序?qū)崿F(xiàn)界面與數(shù)據(jù)分離,這就大大提升了開發(fā)效率,良好的設(shè)計(jì)也使得代碼重用變得更加容易。我們司空見慣的模板安裝卸載等概念,基本上都和模板引擎有著千絲萬縷的聯(lián)系。模板引擎不只是可以讓你實(shí)現(xiàn)代碼分離(業(yè)務(wù)邏輯代碼和用戶界面代碼),也可以實(shí)現(xiàn)數(shù)據(jù)分離(動(dòng)態(tài)數(shù)據(jù)與靜態(tài)數(shù)據(jù)),還可以實(shí)現(xiàn)代碼單元共享(代碼重用),甚至是多語言、動(dòng)態(tài)頁面與靜態(tài)頁面自動(dòng)均衡(SDE)等等與用戶界面可能沒有關(guān)系的功能。 4. 什么是sma

3、rty?Smarty是采用php寫的一個(gè)模版引擎,設(shè)計(jì)的目的是要將php代碼與html代碼分離,使php程序員只專注于php代碼的編寫,網(wǎng)頁美工只專注于網(wǎng)頁的美化。傳統(tǒng)的php文件,沒有模版引擎時(shí)出現(xiàn)的問題?html中php代碼比重越來越大,php與html混編在一起。頁面的數(shù)量越來越多程序設(shè)計(jì)與美工設(shè)計(jì)分工不明確不便于以后的維護(hù)和擴(kuò)展。5.Smarty模板的優(yōu)點(diǎn)如下:速度:相對于其他模板引擎技術(shù)而言。編譯型:采用Smarty編寫的程序在運(yùn)行時(shí)要編譯(組合)成一個(gè)非模板技術(shù)的PHP文件,使后續(xù)的調(diào)用速度更快。緩存技術(shù):Smarty提供了一種可選擇使用的緩存技術(shù),它可以將用戶最終看到HTML文件

4、緩存成一個(gè)靜態(tài)的HTML頁。插件技術(shù):Smarty采用面向?qū)ο髮?shí)現(xiàn),可以非常方面的定義一些插件。強(qiáng)大的表現(xiàn)邏輯:PHP負(fù)責(zé)后臺(tái),Smarty負(fù)責(zé)前端。模板繼承:這使得模板更直觀、更有效和易管理。6. 初始化Smarty類庫的默認(rèn)設(shè)置require ROOT.'libs/Smarty.class.php' /加載Smarty類文件 $smarty = new Smarty();/實(shí)例化Smarty類的對象$smarty /* 推薦用Smarty以上版本方式設(shè)置默認(rèn)路徑,成功后返回$smart對象本身,可連貫操作 */$smarty ->setTemplateDir(ROOT

5、.'templates/')/設(shè)置所有模板文件存放的目錄/ ->addTemplateDir(ROOT.'templates2/')/可以添加多個(gè)模板目錄(前后臺(tái)各一個(gè))->setCompileDir(ROOT.'templates_c/')/設(shè)置所有編譯過的模板文件存放的目錄 ->setPluginsDir(ROOT.'plugins/')/設(shè)置為模板擴(kuò)充插件存放的目錄->setCacheDir(ROOT.'cache/')/設(shè)置緩存文件存放的目錄->setConfigDir(ROO

6、T.'configs');/設(shè)置模板配置文件存放的目錄 $smarty->caching = false;/設(shè)置Smarty緩存開關(guān)功能$smarty->cache_lifetime = 60*60*24;/設(shè)置模板緩存有效時(shí)間段的長度為1天$smarty->left_delimiter = '<'/設(shè)置模板語言中的左結(jié)束符$smarty->right_delimiter = '>'/設(shè)置模板語言中的右結(jié)束符7. 第一個(gè)Smarty的簡單示例/* 第一步:加載自定義的Smarty初使化文件 */require

7、"init.inc.php" /* 第二步:用assign()方法將變量置入模板里 */$smarty->assign("title", "測試用的網(wǎng)頁標(biāo)題");/* 也屬于第二步,分配其他變量置入模板里,可以是任何類型變量 */$smarty->assign("content", "測試用的網(wǎng)頁內(nèi)容");/* 利用Smarty對象中的display()方法將網(wǎng)頁輸出 */$smarty->display("test.html"); 8. 模板的初始化信息$

8、mysmarty->template_dir="./templates"/指定模板目錄$mysmarty->compile_dir="./templates_c"/指定編譯目錄 (自動(dòng)生成的)$mysmarty->config_dir="./configs"/指定配置目錄$mysmarty->cache_dir="./cache"/模板靜態(tài)緩存目錄 (自動(dòng)生成的)$mysmarty->caching=false;/是否開啟靜態(tài)緩存目錄$mysmarty->cache_lifeti

9、me=-1;/靜態(tài)緩存生存時(shí)間(-1代表的是不過期)$mysmarty->left_delimiter="<"/左定界符$mysmarty->right_delimiter=">"/右定界符9. 加載配置文件config_load file="my.ini"config_load file="smarty.conf" section="$lg"/section配置文件中待加載節(jié)塊的名稱10. 忽略smarty解析literal/literal11. 分配變量Assign(

10、“$key”,”$value”);12. 加載模塊Display(“1.html”)/1.html是需要解析的頁面13. 基本語法$mysmarty->assign("id","18");/int整型$mysmarty->assign("str","laoyao");/字符串型$mysmarty->assign("a",array("xiaoguang","xiaohei","xiaoyao");/索引數(shù)組$mysma

11、rty->assign("a1",array("name"=>"dahu","age"=>25);/關(guān)聯(lián)數(shù)組$mysmarty->assign("ob",new Person();/對象class Person/成員屬性public $name="小翠"public $age=25;/成員方法public function info()return $this->name.":".$this->age;14. Smart

12、y的注釋*.* Smarty筆記day021. Smarty的增刪改查<?php/將來框架的控制層的寫法/導(dǎo)入各種文件信息require("./model/Model.class.php"); require("init.php"); require("/configs/config.php"); /Model類的實(shí)例化$mod=new Model("sutdent");switch($_GET'a')/執(zhí)行添加case "insert":$m=$mod->inser

13、t();if($m>0)/分配變量$mysmarty->assign("info","添加成功");else$mysmarty->assign("info","添加失敗");/加載模板$mysmarty->display("stu/info.html");break;/ 執(zhí)行刪除case "del":$m=$mod->delete($_GET'id');/分配變量if($m>0)$mysmarty->assign(&q

14、uot;info","刪除成功");else$mysmarty->assign("info","刪除失敗");/加載模板$mysmarty->display("stu/info.html");break;/執(zhí)行修改case "update":$m=$mod->update();/分配變量if($m>0)$mysmarty->assign("info","修改成功");else$mysmarty->assign(

15、"info","修改失敗");/加載模板$mysmarty->display("stu/info.html");break;/加載添加頁面case "add":$mysmarty->display("stu/add.html");break;/加載修改頁面case "edit":$ob=$mod->find($_GET'id');/分配變量$mysmarty->assign("ob",$ob);/加載模板$mysma

16、rty->display("stu/edit.html");break;/瀏覽case "index":default:$list=$mod->select();/分配變量$mysmarty->assign("list",$list);/加載模板$mysmarty->display("stu/index.html");break; ?>2.Smarty中的引入方式include file=”跳轉(zhuǎn)頁面”3. 如何在增刪改查中拿到原有的數(shù)據(jù)在value當(dāng)中用$數(shù)據(jù).id4. 在Smarty

17、中進(jìn)行value的值的判斷可以用if $數(shù)據(jù).sex=mchecked/if5. 在Smarty中遍歷數(shù)據(jù)的方式foreach $數(shù)據(jù) as $v<td>$v.id</td>,</td>$</td>等等/使用遍歷賦值的時(shí)候返回的數(shù)據(jù)的$v來定義數(shù)據(jù)6. Smarty中id跳轉(zhuǎn)頁面的方法<a href=”頁面.php?a=del(刪除ID)&id=$v(數(shù)據(jù)).id”>刪除</><a href=”頁面.php?a=update(添加ID)&id$v(數(shù)據(jù)).id”>修改</>

18、;7. 怎么獲取保留變量?/獲取當(dāng)前時(shí)間戳$smarty.now;/獲取本地化時(shí)間$smarty.now|date_format:%Y-%m-%d %:H:%M:%S;/獲取常量$smarty.const.PI/捕捉信息$smarty.capture.mycapture獲取配置文件信息$獲取模板名$smarty.template獲取模板目錄$smarty.current_dir獲取版本號(hào)$smarty.version獲取左右定界符 $smarty.ldelim,$smarty.rdelim Smarty筆記day03一.內(nèi)置函數(shù)/var 和 append(追

19、加數(shù)組變量)append var =”數(shù)組” value=”值” index=”索引”/可以直接在模塊中賦值/assign給變量賦值assign var =”name” value=”值”/賦值$name/取值/call函數(shù)調(diào)用function name=”fun”.函數(shù)內(nèi)容./functioncall “fun”/調(diào)用函數(shù)/debug調(diào)試(錯(cuò)誤調(diào)試)debug/只顯示分配的變量值,不顯示模板1.For循環(huán)遍歷for $i to 10$i/for/步長為1的簡單循環(huán)2.for遍歷偶數(shù)for $j=0 to 10 step 2$j/for3.Foreach遍歷foreach $a as $v$v

20、foreachelse/代替數(shù)組的遍歷/foreach4.section遍歷數(shù)組section name=”i” loop=”$a”$ai/section5.Section遍歷二維數(shù)組section name=”sid” loop=”$list”$/section$ctotal/獲取多少數(shù)據(jù)$smarty.section.sid.iteration/是否已被緩存$smarty.section.total/獲取數(shù)據(jù)$sectionelse/判斷條件2. 自定義函數(shù)1.registerPlugin(“函數(shù)function”,”函數(shù)名”,”系統(tǒng)函數(shù)”);注冊插件/將系統(tǒng)的time函數(shù)注冊到新的函數(shù)名.模板當(dāng)中使用time()/獲取系統(tǒng)事件函數(shù)mytime/注冊函數(shù)2.registerPlugin(“函數(shù)名”,”新函數(shù)名”,”自定義函數(shù)名”);/將自定義的fun函

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論