Smarty模板
是做什么用的??
是將前端的顯示和后台的邏輯進行分離,就相當於把前台顯示的頁面和后台要實現的某些功能的邏輯給分離出來了,分離在兩個文件里,也就是說,前端只負責顯示,后端只負責邏輯操作,就相當於cms一樣。Smarty模板就是實現前后分離的,能夠程序多人開發,比如說,美工就做前端程序員就做后端,實現分工開發,便於后期維護。比如這個頁面看着不好看了,我在換一種風格,可以直接換掉模板就可以了。把Smarty模板放在你的程序文件加里就可以了,這個文件加的名字可以隨便取。
這個文件加的名字可以隨便取。
libs 是smarty模板的核心文件
這些文件是smarty模板里自帶的
這是smarty的核心類(smarty為什么能實現前后分離,完全取決於這個類,根據這個類的方法來進行分離的)。這個類是我們要用到的
自動加載的意思
放插件的,smarty自帶的插件。系統自帶的插件
插件目錄。系統核心插件,里面的插件可以拿來使用,里面都是類文件
Smarty就相當於我們做程序的核心目錄,所有的程序代碼都是在Smarty目錄里寫
要使用Smarty模板的話,就要引用類Smarty.class.php(它是Smarty的核心類)
Smarty.class.php如何實現前后端分離的????????
建了一個類文件
1 <?php 2 //模擬做了一個類
3
4 /*這個類前后端分離的*/
5
6 /* Smarty類文件*/
7 class Smarty 8 { //成員變量
9 public $left = "<{";//左分隔符
10 public $right = "}>"; //右分隔符 //這兩個分割符是用來,在做phpcms的時候只要是在我們的模板里想要嵌入php的標簽外層都加了一個花括號{},這個花括號就代表左分隔符、右分隔符,它是phpcms里面使用的模板所提供的左分隔符、右分隔符,也就是說phpcms里面他的左分隔符就是“{”、右分隔符就是“}”,就是要在模板里嵌入phpcms提供的標記必須要使用花括號{}括起來,花括號是從哪定義的就是從模板引擎的類文件里定義的,定義的是花括號{},所以當它遇到{}時就會把它當成變量來解析
11 public $attr = array();//存儲變量信息,存儲變量的數組 12
13 //向模板引擎注冊變量(向模板里注冊變量或者叫添加變量,使用的)
14 function assign()//它是成員變量.這個方法需要兩個($name,$value)需要兩個參數,變量名和變量的值 15 //function assign()這個方法量向模板里注冊變量或者叫添加變量使用的
16 { 17 //調用這個function assign()方法,向$attr = array();數組里添加內容
18
19 $this->attr[$name] = $value; 20 } 21 //顯示模板的方法
22 function display($filename)//需要一個參數,模板文件的路徑(從這個頁面通過相對路徑或者絕對路徑找到這個模板文件交給我)
23 { //這個方法怎么把靜態的頁面怎樣拿過來之后顯示靜態的頁面 24 //$filename是傳過來靜態頁面路徑,有路徑可以獲取里面的內容, 25
26
27 //獲取模板文件的內容(獲取靜態頁面的內容),的方法是file_get_contents($filename//參數是路徑)
28 $str = file_get_contents($filename);//靜態頁面的所有內容都獲取到了
29
30 /*
31 這就是它獲取的內容,是字符串,這就是$str獲取到的 32 <html> 33 <head></head> 34 <body> 35 <div><{$aa}></div> //<{$aa}>在這個位置輸出一個$aa 的變量 36 </body> 37 </html> 38 */
39
40 //怎樣把模板里的$aa,變成數組里有的內容 41 //調用display方法之前,先要往assign模板里注冊變量。注冊了一個名為assign(變量名為$aa的變量)的變量,在模板里要顯示$aa的值 42 //把變量$aa替換成,數組里的$attr索引為aa的值 43
44 //用正則匹配模板里面的變量
45 /*<html> 46 <head></head> 47 <body> 48 <div><{$aa}></div> 49 </body> 50 </html> 51
52 //匹配<{$aa}>$aa里面的內容.如果瞞足<{}>當做Smarty的標簽,就把這個標簽替換成<?php echo $attr["aa"] ?>php的標記 53 */
54
55 //沒有把替換好的內容直接輸出,又做了一步 56
57 //將替換好的內容存到文件(相當於臨時文件)里面,內容還是存在$str里,把內容寫入文件,寫入文件的方法是file_put_contents
58 $lujing = "./mobanc/aa.php"; 59 file_put_contents($lujing,$str); 60
61
62 //將臨時文件讀取(到當前的頁面顯示):include的方法,相當於直接拿這個方法來時用
63 include($lujing); 64
65 } 66 } 67
68
比如,這個類做好以后
有一個文件---------“test.php”
“test.php”這個頁面要使用類
新建了一個文件叫-----------test.php
這個文件要使用這個類了
<?php
//這個頁面要引用這個類了"Smarty.class.php"
include("Smarty.class.php");
//這個頁面訪問的是“test.php”,但是要顯示index.html,index.html里面需要顯示一個變量$aa
//先造$smarty的對象
$smarty = new Smarty();
//前端就是:<div>{$aa}</div>,<div>里面要顯示變量$aa的值
//在這個頁面就要注冊一個變量叫$aa
$smarty->assign("aa","12134");//smarty調用里面的方法assign(變量名,變量的值)
//要顯示index.html頁面,要調用smarty里面的display(路徑)方法
$smarty->display("index.html");
在main文件夾下建一個文件--------“test.php”
訪問“test.php”這個文件的話,需要使用smarty類
這個“test.php”文件,需要把smarty類引用
<?php
include("../libs/Smarty.class.php");//引用Smarty類
$smarty = new Smarty();//造對象
//可以調用里面的方法,注冊變量
//調用$smarty里面的方法assign(變量名,變量值)注冊變量
$smarty->assign("aa","123");
//調用$smarty里面的方法display(),去顯示模板
$smarty->display("../templates/tese.html");//調用這個“tese.html”模板來顯示
templates模板文件夾
在templates這個文件夾下新建了一個-------“test.php”
要顯示的是“test.html”這個模板
//這個displaya()方法還用到了一個臨時文件,這個臨時文件存放在什么位置
這個文件夾是存放臨時文件的
還有一個緩存文件存放在
緩存文件存放在,cache文件夾里面
總結:
在訪問我們做“test.php”這個頁面的時候,
我們需要做的幾個事情:
【1】 做好這個“test.php”頁面
【2】 做好模板
【3】 需要規定好臨時文件存放的目錄
【4】 還有一個格外的,緩存文件的目錄
【5】 代碼:
使用模板的話,需要用到很多文件夾,要對這些文件夾進行一個配置
配置好在用
建一個文件-------“init.inc.php”
他就是Smarty的配置文件。這個文件的位置可以隨便放
<?php
define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定項目根目錄
echo __FILE__;//獲取當前文件所在的位置
輸出的結果是:::::
echo dirname(__FILE__); // dirname(__FILE__); 這個文件所在的文件夾
輸出返回的結果:::::::
這個頁面,是訪問的頁面
顯示的結果:
例子:
顯示的結果::
臨時文件: