close
文章出處
對前后端進行分離
如果要用的話,要從網上把smarty文件下載下來,才能用
smarty的核心是一個類
建一個php文件,寫一個類文件
<?php class smarty { public $left = "{"; //左分隔符 public $right = "}"; //右分隔符 public $arr = array(); //存儲變量 //向模板里面注冊變量 function assign($key,$value) { $this->arr[$key] = $value; } //顯示模板 function display($name) { //找到模板路徑 $url = "/".$name; //模板讀取 $str = file_get_contents($url); //將str里面的某些內容(變量)做了替換 //將模板里面的<{$aa}> 替換成 <?php echo $arr[aa] //將替換好的字符串保存到編譯好的文件 file_put_contents($filename,$str); //將編譯好的文件拿到當前頁面顯示 include($filename); } }
來看一下這個方法是什么個原理,看一下效果
在這個目錄下建個php文件
<?php include("../init.inc.php"); $smarty->assign("ceshi","你好"); //注冊變量的方法 $smarty->display("test.html");
然后再在這個目錄下寫個html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> </head> <body> <{$ceshi}> </body> </html>
然后運行php文件,看看能出來什么效果
它輸出了html文件里面的內容
這樣就能知道php文件里面的display是干嘛了,是把html文件里面的模板放到php這個頁面來顯示
然后再把里面的變量解析
這樣就能實現了前后端分離了,訪問的頁面不一定是要顯示的頁面
如果html里面用到了圖片或樣式表,相對于我們訪問的文件來找,并不一定是html
來看一下一個真正的smarty類
這是從網上下載的一個smarty文件
有幾個文件是自己后來加的,剛下的時候文件沒有那么多
其中這個文件是比較重要的,是smarty的一個入口文件
再就是這個文件
點開它,有smarty的核心類
里面的內容邏輯和剛才寫的那個簡單文件差不多,它里面有很多成員變量
libs是smarty的一個核心目錄
里面的plugins是存放插件的一個文件
sysplugins是存放系統插件
cache是用來放緩存文件
configs用來放配置文件
templates放模板文件
templates_c 用來放編譯好的文件
來看一下入口文件的內容,也就是init.inc.php里面的內容
<?php define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定項目根目錄 //echo str_replace("\\","/",dirname(__FILE__)).'/'; //獲取當前文件所在的位置 require ROOT.'libs/Smarty.class.php'; //加載Smarty類文件 $smarty = new Smarty(); //實例化Smarty對象 define("CSS_PATH","/project/css/"); define("JS_PATH","/project/js/"); //$smarty -> auto_literal = false; //就可以讓定界符號使用空格 $smarty->setTemplateDir(ROOT.'templates/'); //設置所有模板文件存放位置 //$smarty->addTemplateDir(ROOT.'templates2/'); //添加一個模板文件夾 $smarty->setCompileDir(ROOT.'templates_c/'); //設置編譯過的模板存放的目錄 $smarty->addPluginsDir(ROOT.'plugins/'); //設置為模板擴充插件存放目錄 $smarty->setCacheDir(ROOT.'cache/'); //設置緩存文件存放目錄 $smarty->setConfigDir(ROOT.'configs/'); //設置模板配置文件存放目錄 $smarty->caching = false; //設置Smarty緩存開關功能 $smarty->cache_lifetime = 60*60*24; //設置緩存模板有效時間一天 $smarty->left_delimiter = '<{'; //設置模板語言中的左結束符 $smarty->right_delimiter = '}>'; //設置模板語言中的右結束符 ?>
在網址輸入入口文件的地址,輸出的是入口文件的目錄
在入口文件里其實默認的分隔符是花括號,但為了避免出問題就加上了尖括號
![]() |
不含病毒。www.avast.com |
全站熱搜